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

Dependencies:   mbed

main.cpp

Committer:
elleo
Date:
2013-01-09
Revision:
0:ce6724069f0a

File content as of revision 0:ce6724069f0a:

#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);
    }
}