A simple string synthesizer implementing the Karplus-Strong algorithm. Licensed under the GNU LGPL.

Dependencies:   mbed

Revision:
0:ce6724069f0a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jan 09 22:46:12 2013 +0000
@@ -0,0 +1,128 @@
+#include "mbed.h"
+#include "Synth.h"
+
+Synth s(p18);
+
+void fly_me_to_the_moon(Synth *s) {
+    //Fly me to the moon
+    s->add_note(NOTE_C5, 1.5); 
+    s->add_note(NOTE_B4, 0.5);
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_G4, 0.5);
+    
+    s->add_note(NOTE_F4, 1.5);
+    s->add_note(NOTE_G4, 0.5);
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_C5, 0.5);
+    
+    s->add_note(NOTE_B4, 1.5);
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_G4, 0.5);
+    s->add_note(NOTE_F4, 0.5);
+    
+    s->add_note(NOTE_E4, 3);
+    
+    s->add_note(NOTE_A4, 1.5);
+    s->add_note(NOTE_G4, 0.5);
+    s->add_note(NOTE_F4, 0.5);
+    s->add_note(NOTE_E4, 0.5);
+    
+    s->add_note(NOTE_D4, 1.5);
+    s->add_note(NOTE_E4, 0.5);
+    s->add_note(NOTE_F4, 0.5);
+    s->add_note(NOTE_A4, 0.5);
+    
+    s->add_note(NOTE_A_FLAT4, 1.5);
+    s->add_note(NOTE_F4, 0.5);
+    s->add_note(NOTE_E4, 0.5);
+    s->add_note(NOTE_D4, 0.5);
+    
+    s->add_note(NOTE_C4, 2);
+    s->add_note(NOTE_C_SHARP4, 1);
+    
+    s->add_note(NOTE_D4, 0.5);
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_A4, 3);
+    s->add_note(NOTE_C5, 1);
+    s->add_note(NOTE_B4, 1);
+    
+    s->add_note(NOTE_G4, 5);
+    s->add_note(NOTE_B3, 1);
+    
+    s->add_note(NOTE_C4, 0.5);
+    s->add_note(NOTE_F4, 0.5);
+    s->add_note(NOTE_F4, 3);
+    s->add_note(NOTE_A4, 1);
+    s->add_note(NOTE_G4, 1);
+    s->add_note(NOTE_F4, 1);
+    s->add_note(NOTE_E4, 5);
+    
+    s->add_note(NOTE_C5, 1.5);
+    s->add_note(NOTE_B4, 0.5);
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_G4, 0.5);
+    
+    s->add_note(NOTE_F4, 1.5);
+    s->add_note(NOTE_G4, 0.5);
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_C5, 0.5);
+    
+    s->add_note(NOTE_B4, 1.5);
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_G4, 0.5);
+    s->add_note(NOTE_F4, 0.5);
+    
+    s->add_note(NOTE_E4, 3);
+    
+    s->add_note(NOTE_A4, 1.5);
+    s->add_note(NOTE_G4, 0.5);
+    s->add_note(NOTE_F4, 0.5);
+    s->add_note(NOTE_E4, 0.5);
+    
+    s->add_note(NOTE_D4, 1.5);
+    s->add_note(NOTE_E4, 0.5);
+    s->add_note(NOTE_F4, 0.5);
+    s->add_note(NOTE_G4, 0.5);
+    
+    s->add_note(NOTE_A_FLAT4, 1.5);
+    s->add_note(NOTE_F4, 0.5);
+    s->add_note(NOTE_E4, 0.5);
+    s->add_note(NOTE_D4, 0.5);
+    
+    s->add_note(NOTE_C4, 2);
+    s->add_note(NOTE_C_SHARP4, 1);
+    
+    s->add_note(NOTE_D4, 0.5);
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_A4, 3);
+    s->add_note(NOTE_C5, 1);
+    s->add_note(NOTE_B4, 1);
+    
+    s->add_note(NOTE_G4, 5);
+    s->add_note(NOTE_A_FLAT4, 1);
+    
+    s->add_note(NOTE_A4, 0.5);
+    s->add_note(NOTE_C4, 0.5);
+    s->add_note(NOTE_C4, 3);
+    s->add_note(NOTE_C4, 1);
+    s->add_note(NOTE_D4, 1);
+    
+    s->add_note(NOTE_C4, 3);
+}
+
+int main() {
+    PluckedGuitar *g = new PluckedGuitar();
+    s.set_bpm(100);
+    s.set_instrument(g);
+    fly_me_to_the_moon(&s);
+    s.set_repeat(true);
+    s.play();
+    DigitalOut led1(LED1);
+    DigitalOut led4(LED4);
+    led1 = 1;
+    while(1) {
+        led1 = !led1;
+        led4 = !led4;
+        wait(1);
+    }
+}
\ No newline at end of file