Advertisement
ripred

Imperial_March.h

Nov 23rd, 2022
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.66 KB | None | 0 0
  1. //Star Wars Imperial March -
  2. //Simple 2 pin Buzzer Arduino - Source: https://goo.gl/eH33Vh - Arduino Tone:  https://goo.gl/ptlXDj -
  3. //
  4. // NB: ALL NOTES DEFINED WITH STANDARD ENGLISH NAMES, EXCEPT FROM "A"
  5. // THAT IS CALLED WITH THE ITALIAN NAME "LA" BECAUSE A0,A1...ARE THE ANALOG PINS ON ARDUINO.
  6. // Also, B0 and B1 conflict with newer platform.txt definitions so renamed to B0_ and B1_
  7. // (Ab IS CALLED Ab AND NOT LAb)
  8.  
  9. namespace ImpMarch {
  10.    
  11.     #define  C0 16.35
  12.     #define Db0 17.32
  13.     #define D0  18.35
  14.     #define Eb0 19.45
  15.     #define E0  20.60
  16.     #define F0  21.83
  17.     #define Gb0 23.12
  18.     #define G0  24.50
  19.     #define Ab0 25.96
  20.     #define LA0 27.50
  21.     #define Bb0 29.14
  22.     #define B0_ 30.87
  23.     #define C1  32.70
  24.     #define Db1 34.65
  25.     #define D1  36.71
  26.     #define Eb1 38.89
  27.     #define E1  41.20
  28.     #define F1  43.65
  29.     #define Gb1 46.25
  30.     #define G1  49.00
  31.     #define Ab1 51.91
  32.     #define LA1 55.00
  33.     #define Bb1 58.27
  34.     #define B1_  61.74
  35.     #define C2  65.41
  36.     #define Db2 69.30
  37.     #define D2  73.42
  38.     #define Eb2 77.78
  39.     #define E2  82.41
  40.     #define F2  87.31
  41.     #define Gb2 92.50
  42.     #define G2  98.00
  43.     #define Ab2 103.83
  44.     #define LA2 110.00
  45.     #define Bb2 116.54
  46.     #define B2  123.47
  47.     #define C3  130.81
  48.     #define Db3 138.59
  49.     #define D3  146.83
  50.     #define Eb3 155.56
  51.     #define E3  164.81
  52.     #define F3  174.61
  53.     #define Gb3 185.00
  54.     #define G3  196.00
  55.     #define Ab3 207.65
  56.     #define LA3 220.00
  57.     #define Bb3 233.08
  58.     #define B3  246.94
  59.     #define C4  261.63
  60.     #define Db4 277.18
  61.     #define D4  293.66
  62.     #define Eb4 311.13
  63.     #define E4  329.63
  64.     #define F4  349.23
  65.     #define Gb4 369.99
  66.     #define G4  392.00
  67.     #define Ab4 415.30
  68.     #define LA4 440.00
  69.     #define Bb4 466.16
  70.     #define B4  493.88
  71.     #define C5  523.25
  72.     #define Db5 554.37
  73.     #define D5  587.33
  74.     #define Eb5 622.25
  75.     #define E5  659.26
  76.     #define F5  698.46
  77.     #define Gb5 739.99
  78.     #define G5  783.99
  79.     #define Ab5 830.61
  80.     #define LA5 880.00
  81.     #define Bb5 932.33
  82.     #define B5  987.77
  83.     #define C6  1046.50
  84.     #define Db6 1108.73
  85.     #define D6  1174.66
  86.     #define Eb6 1244.51
  87.     #define E6  1318.51
  88.     #define F6  1396.91
  89.     #define Gb6 1479.98
  90.     #define G6  1567.98
  91.     #define Ab6 1661.22
  92.     #define LA6 1760.00
  93.     #define Bb6 1864.66
  94.     #define B6  1975.53
  95.     #define C7  2093.00
  96.     #define Db7 2217.46
  97.     #define D7  2349.32
  98.     #define Eb7 2489.02
  99.     #define E7  2637.02
  100.     #define F7  2793.83
  101.     #define Gb7 2959.96
  102.     #define G7  3135.96
  103.     #define Ab7 3322.44
  104.     #define LA7 3520.01
  105.     #define Bb7 3729.31
  106.     #define B7  3951.07
  107.     #define C8  4186.01
  108.     #define Db8 4434.92
  109.     #define D8  4698.64
  110.     #define Eb8 4978.03
  111.    
  112.     // DURATION OF THE NOTES
  113.     // You can change this value changing all the others
  114.     #define BPM ((int)(120*2))
  115.    
  116.     #define H 2*Q           // Half 2/4
  117.     #define Q 60000/BPM     // Quarter 1/4
  118.     #define E Q/2           // Eighth 1/8
  119.     #define S Q/4           // Sixteenth 1/16
  120.     #define W 4*Q           // Whole 4/4
  121.    
  122.     int RESET_SLEEP = 7;    // active low
  123.     int numberPasses = 1;
  124.     int startupDelay = 250;
  125.     bool playFullPiece = false;
  126.     bool part1 = true;
  127.     bool part2 = false;
  128.    
  129.     //  uncomment to change octave
  130.     #define tone(P,N,D) tone(P,(N)*56,D)
  131.    
  132.     void marchSetup(int pin) {
  133.         pinMode(pin, OUTPUT);
  134.         digitalWrite(pin,LOW);
  135.    
  136.         pinMode(RESET_SLEEP, OUTPUT);
  137.         digitalWrite(RESET_SLEEP, HIGH);
  138.     }
  139.    
  140.     // the loop routine runs over and over again forever:
  141.     void marchLoop(int pin) {
  142.         if (numberPasses <= 0) {
  143.             noTone(pin);
  144.             digitalWrite(RESET_SLEEP, LOW);
  145.         }
  146.         else {
  147.             numberPasses--;
  148.             delay(startupDelay);
  149.  
  150.           //tone(pin, note, duration)
  151.             if (part1) {
  152.                 tone(pin,LA3,Q);
  153.                 delay(1+Q); // Delay duration should always be 1 ms more than the note in order to separate them.
  154.                 tone(pin,LA3,Q);
  155.                 delay(1+Q);
  156.                 tone(pin,LA3,Q);
  157.                 delay(1+Q);
  158.                 tone(pin,F3,E+S);
  159.                 delay(1+E+S);
  160.                 tone(pin,C4,S);
  161.                 delay(1+S);
  162.            
  163.                 tone(pin,LA3,Q);
  164.                 delay(1+Q);
  165.                 tone(pin,F3,E+S);
  166.                 delay(1+E+S);
  167.                 tone(pin,C4,S);
  168.                 delay(1+S);
  169.                 tone(pin,LA3,H);
  170.                 delay(1+H);
  171.             }        
  172.  
  173.             if (playFullPiece || part2) {
  174.                 if (part2) {
  175.                     tone(pin,E4,Q);
  176.                     delay(1+Q);
  177.                     tone(pin,E4,Q);
  178.                     delay(1+Q);
  179.                     tone(pin,E4,Q);
  180.                     delay(1+Q);
  181.                     tone(pin,F4,E+S);
  182.                     delay(1+E+S);
  183.                     tone(pin,C4,S);
  184.                     delay(1+S);
  185.                
  186.                     tone(pin,Ab3,Q);
  187.                     delay(1+Q);
  188.                     tone(pin,F3,E+S);
  189.                     delay(1+E+S);
  190.                     tone(pin,C4,S);
  191.                     delay(1+S);
  192.                     tone(pin,LA3,H);
  193.                     delay(1+H);
  194.                 }
  195.                 tone(pin,LA4,Q);
  196.                 delay(1+Q);
  197.                 tone(pin,LA3,E+S);
  198.                 delay(1+E+S);
  199.                 tone(pin,LA3,S);
  200.                 delay(1+S);
  201.                 tone(pin,LA4,Q);
  202.                 delay(1+Q);
  203.                 tone(pin,Ab4,E+S);
  204.                 delay(1+E+S);
  205.                 tone(pin,G4,S);
  206.                 delay(1+S);
  207.            
  208.                 tone(pin,Gb4,S);
  209.                 delay(1+S);
  210.                 tone(pin,E4,S);
  211.                 delay(1+S);
  212.                 tone(pin,F4,E);
  213.                 delay(1+E);
  214.                 delay(1+E); // PAUSE
  215.                 tone(pin,Bb3,E);
  216.                 delay(1+E);
  217.                 tone(pin,Eb4,Q);
  218.                 delay(1+Q);
  219.                 tone(pin,D4,E+S);
  220.                 delay(1+E+S);
  221.                 tone(pin,Db4,S);
  222.                 delay(1+S);
  223.            
  224.                 tone(pin,C4,S);
  225.                 delay(1+S);
  226.                 tone(pin,B3,S);
  227.                 delay(1+S);
  228.                 tone(pin,C4,E);
  229.                 delay(1+E);
  230.                 delay(1+E); // PAUSE QUASI FINE RIGA
  231.                 tone(pin,F3,E);
  232.                 delay(1+E);
  233.                 tone(pin,Ab3,Q);
  234.                 delay(1+Q);
  235.                 tone(pin,F3,E+S);
  236.                 delay(1+E+S);
  237.                 tone(pin,LA3,S);
  238.                 delay(1+S);
  239.            
  240.                 tone(pin,C4,Q);
  241.                 delay(1+Q);
  242.                 tone(pin,LA3,E+S);
  243.                 delay(1+E+S);
  244.                 tone(pin,C4,S);
  245.                 delay(1+S);
  246.                 tone(pin,E4,H);
  247.                 delay(1+H);
  248.            
  249.                 tone(pin,LA4,Q);
  250.                 delay(1+Q);
  251.                 tone(pin,LA3,E+S);
  252.                 delay(1+E+S);
  253.                 tone(pin,LA3,S);
  254.                 delay(1+S);
  255.                 tone(pin,LA4,Q);
  256.                 delay(1+Q);
  257.                 tone(pin,Ab4,E+S);
  258.                 delay(1+E+S);
  259.                 tone(pin,G4,S);
  260.                 delay(1+S);
  261.            
  262.                 tone(pin,Gb4,S);
  263.                 delay(1+S);
  264.                 tone(pin,E4,S);
  265.                 delay(1+S);
  266.                 tone(pin,F4,E);
  267.                 delay(1+E);
  268.                 delay(1+E);//PAUSE
  269.                 tone(pin,Bb3,E);
  270.                 delay(1+E);
  271.                 tone(pin,Eb4,Q);
  272.                 delay(1+Q);
  273.                 tone(pin,D4,E+S);
  274.                 delay(1+E+S);
  275.                 tone(pin,Db4,S);
  276.                 delay(1+S);
  277.            
  278.                 tone(pin,C4,S);
  279.                 delay(1+S);
  280.                 tone(pin,B3,S);
  281.                 delay(1+S);
  282.                 tone(pin,C4,E);
  283.                 delay(1+E);
  284.                 delay(1+E); // PAUSE QUASI FINE RIGA
  285.                 tone(pin,F3,E);
  286.                 delay(1+E);
  287.                 tone(pin,Ab3,Q);
  288.                 delay(1+Q);
  289.                 tone(pin,F3,E+S);
  290.                 delay(1+E+S);
  291.                 tone(pin,C4,S);
  292.                 delay(1+S);
  293.            
  294.                 tone(pin,LA3,Q);
  295.                 delay(1+Q);
  296.                 tone(pin,F3,E+S);
  297.                 delay(1+E+S);
  298.                 tone(pin,C4,S);
  299.                 delay(1+S);
  300.                 tone(pin,LA3,H);
  301.                 delay(1+H);
  302.            
  303.                 delay(2*H);
  304.             }
  305.         }
  306.     }
  307. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement