/* 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 button1 = 3; int button2 = 4; int button3 = 5; int val1 = 0; int val2 = 0; int val3 = 0; int length = 15; // the number of notes char notes[] = "ccggaagffeeddc "; // a space represents a rest int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 }; int tempo = 300; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) { if (names[i] == note) { playTone(tones[i], duration); } } } void setup() { pinMode(speakerPin, OUTPUT); pinMode(button1, INPUT); pinMode(button2, INPUT); pinMode(button3, INPUT); } void loop() { val1 = digitalRead(button1); val2 = digitalRead(button2); val3 = digitalRead(button3); if (val1 == LOW) { playNote('c', 1 * tempo); // } else { // playNote(notes[i], beats[i] * tempo); } if (val2 == LOW) { playNote('e', 1 * tempo); } if (val3 == LOW) { playNote('g', 1 * tempo); } }
May 22, 2013
World's silliest arduino-based electronic musical instrument
This is the world's silliest arduino-based electronic musical instrument. It is a mashup of the "Melody" tutorial and the "Button" tutorial. The code I modified (see below) strips out the part where the tune is actually played and instead plays a single note when each button is pressed.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment