Arudindiana Jones
Here goes the indiana jones theme:
And the code, for which I had to figure out a few new notes (I did so using my midi keyboard and garage band and just “hand tuning” the arduino code.
/*Based on Melody * (cleft) 2005 D. Cuartielles for K3 * * This example uses a piezo speaker to play melodies. It sends * a square wave of the appropriate frequency to the piezo, generating * the corresponding tone. * * The calculation of the tones is made following the mathematical * operation: * * timeHigh = period / 2 = 1 / (2 * toneFrequency) * * where the different tones are described as in the table: * * note frequency period timeHigh * c 261 Hz 3830 1915 * d 294 Hz 3400 1700 * e 329 Hz 3038 1519 * f 349 Hz 2864 1432 * g 392 Hz 2550 1275 * a 440 Hz 2272 1136 * b 493 Hz 2028 1014 * C 523 Hz 1912 956 * * http://www.arduino.cc/en/Tutorial/Melody */ int speakerPin = 9; int length = 90; char notes[] = "efgCdefgABFABCDEefgCDEFggEDDEDDEDDEDCC"; int beats[] = {2, 1, 2, 8, 2, 1, 8, 2,1,2,8,2,1,3,3,3,2, 1, 2, 6, 2, 1, 5, 2,1,4,2,1, 4,2,1,4,2,1,1,2,8}; //char notes[] = "dDdD"; //int beats[] = {1,1,2,2,2}; int tempo = 126; void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'A', 'B', 'C', 'D', 'E', 'F' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956, 840, 760, 700 }; // play the tone corresponding to the note name for (int i = 0; i < 11; i++) { if (names[i] == note) { playTone(tones[i], duration); } } } void setup() { pinMode(speakerPin, OUTPUT); } void loop() { for (int i = 0; i < length; i++) { if (notes[i] == ' ') { delay(beats[i] * tempo); // rest } else { playNote(notes[i], beats[i] * tempo); } // pause between notes delay(tempo / 2); } }
Reply