Mike Sheldon
/
Synth
A simple string synthesizer implementing the Karplus-Strong algorithm. Licensed under the GNU LGPL.
main.cpp@0:ce6724069f0a, 2013-01-09 (annotated)
- Committer:
- elleo
- Date:
- Wed Jan 09 22:46:12 2013 +0000
- Revision:
- 0:ce6724069f0a
Migration to new repository
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
elleo | 0:ce6724069f0a | 1 | #include "mbed.h" |
elleo | 0:ce6724069f0a | 2 | #include "Synth.h" |
elleo | 0:ce6724069f0a | 3 | |
elleo | 0:ce6724069f0a | 4 | Synth s(p18); |
elleo | 0:ce6724069f0a | 5 | |
elleo | 0:ce6724069f0a | 6 | void fly_me_to_the_moon(Synth *s) { |
elleo | 0:ce6724069f0a | 7 | //Fly me to the moon |
elleo | 0:ce6724069f0a | 8 | s->add_note(NOTE_C5, 1.5); |
elleo | 0:ce6724069f0a | 9 | s->add_note(NOTE_B4, 0.5); |
elleo | 0:ce6724069f0a | 10 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 11 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 12 | |
elleo | 0:ce6724069f0a | 13 | s->add_note(NOTE_F4, 1.5); |
elleo | 0:ce6724069f0a | 14 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 15 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 16 | s->add_note(NOTE_C5, 0.5); |
elleo | 0:ce6724069f0a | 17 | |
elleo | 0:ce6724069f0a | 18 | s->add_note(NOTE_B4, 1.5); |
elleo | 0:ce6724069f0a | 19 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 20 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 21 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 22 | |
elleo | 0:ce6724069f0a | 23 | s->add_note(NOTE_E4, 3); |
elleo | 0:ce6724069f0a | 24 | |
elleo | 0:ce6724069f0a | 25 | s->add_note(NOTE_A4, 1.5); |
elleo | 0:ce6724069f0a | 26 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 27 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 28 | s->add_note(NOTE_E4, 0.5); |
elleo | 0:ce6724069f0a | 29 | |
elleo | 0:ce6724069f0a | 30 | s->add_note(NOTE_D4, 1.5); |
elleo | 0:ce6724069f0a | 31 | s->add_note(NOTE_E4, 0.5); |
elleo | 0:ce6724069f0a | 32 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 33 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 34 | |
elleo | 0:ce6724069f0a | 35 | s->add_note(NOTE_A_FLAT4, 1.5); |
elleo | 0:ce6724069f0a | 36 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 37 | s->add_note(NOTE_E4, 0.5); |
elleo | 0:ce6724069f0a | 38 | s->add_note(NOTE_D4, 0.5); |
elleo | 0:ce6724069f0a | 39 | |
elleo | 0:ce6724069f0a | 40 | s->add_note(NOTE_C4, 2); |
elleo | 0:ce6724069f0a | 41 | s->add_note(NOTE_C_SHARP4, 1); |
elleo | 0:ce6724069f0a | 42 | |
elleo | 0:ce6724069f0a | 43 | s->add_note(NOTE_D4, 0.5); |
elleo | 0:ce6724069f0a | 44 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 45 | s->add_note(NOTE_A4, 3); |
elleo | 0:ce6724069f0a | 46 | s->add_note(NOTE_C5, 1); |
elleo | 0:ce6724069f0a | 47 | s->add_note(NOTE_B4, 1); |
elleo | 0:ce6724069f0a | 48 | |
elleo | 0:ce6724069f0a | 49 | s->add_note(NOTE_G4, 5); |
elleo | 0:ce6724069f0a | 50 | s->add_note(NOTE_B3, 1); |
elleo | 0:ce6724069f0a | 51 | |
elleo | 0:ce6724069f0a | 52 | s->add_note(NOTE_C4, 0.5); |
elleo | 0:ce6724069f0a | 53 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 54 | s->add_note(NOTE_F4, 3); |
elleo | 0:ce6724069f0a | 55 | s->add_note(NOTE_A4, 1); |
elleo | 0:ce6724069f0a | 56 | s->add_note(NOTE_G4, 1); |
elleo | 0:ce6724069f0a | 57 | s->add_note(NOTE_F4, 1); |
elleo | 0:ce6724069f0a | 58 | s->add_note(NOTE_E4, 5); |
elleo | 0:ce6724069f0a | 59 | |
elleo | 0:ce6724069f0a | 60 | s->add_note(NOTE_C5, 1.5); |
elleo | 0:ce6724069f0a | 61 | s->add_note(NOTE_B4, 0.5); |
elleo | 0:ce6724069f0a | 62 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 63 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 64 | |
elleo | 0:ce6724069f0a | 65 | s->add_note(NOTE_F4, 1.5); |
elleo | 0:ce6724069f0a | 66 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 67 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 68 | s->add_note(NOTE_C5, 0.5); |
elleo | 0:ce6724069f0a | 69 | |
elleo | 0:ce6724069f0a | 70 | s->add_note(NOTE_B4, 1.5); |
elleo | 0:ce6724069f0a | 71 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 72 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 73 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 74 | |
elleo | 0:ce6724069f0a | 75 | s->add_note(NOTE_E4, 3); |
elleo | 0:ce6724069f0a | 76 | |
elleo | 0:ce6724069f0a | 77 | s->add_note(NOTE_A4, 1.5); |
elleo | 0:ce6724069f0a | 78 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 79 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 80 | s->add_note(NOTE_E4, 0.5); |
elleo | 0:ce6724069f0a | 81 | |
elleo | 0:ce6724069f0a | 82 | s->add_note(NOTE_D4, 1.5); |
elleo | 0:ce6724069f0a | 83 | s->add_note(NOTE_E4, 0.5); |
elleo | 0:ce6724069f0a | 84 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 85 | s->add_note(NOTE_G4, 0.5); |
elleo | 0:ce6724069f0a | 86 | |
elleo | 0:ce6724069f0a | 87 | s->add_note(NOTE_A_FLAT4, 1.5); |
elleo | 0:ce6724069f0a | 88 | s->add_note(NOTE_F4, 0.5); |
elleo | 0:ce6724069f0a | 89 | s->add_note(NOTE_E4, 0.5); |
elleo | 0:ce6724069f0a | 90 | s->add_note(NOTE_D4, 0.5); |
elleo | 0:ce6724069f0a | 91 | |
elleo | 0:ce6724069f0a | 92 | s->add_note(NOTE_C4, 2); |
elleo | 0:ce6724069f0a | 93 | s->add_note(NOTE_C_SHARP4, 1); |
elleo | 0:ce6724069f0a | 94 | |
elleo | 0:ce6724069f0a | 95 | s->add_note(NOTE_D4, 0.5); |
elleo | 0:ce6724069f0a | 96 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 97 | s->add_note(NOTE_A4, 3); |
elleo | 0:ce6724069f0a | 98 | s->add_note(NOTE_C5, 1); |
elleo | 0:ce6724069f0a | 99 | s->add_note(NOTE_B4, 1); |
elleo | 0:ce6724069f0a | 100 | |
elleo | 0:ce6724069f0a | 101 | s->add_note(NOTE_G4, 5); |
elleo | 0:ce6724069f0a | 102 | s->add_note(NOTE_A_FLAT4, 1); |
elleo | 0:ce6724069f0a | 103 | |
elleo | 0:ce6724069f0a | 104 | s->add_note(NOTE_A4, 0.5); |
elleo | 0:ce6724069f0a | 105 | s->add_note(NOTE_C4, 0.5); |
elleo | 0:ce6724069f0a | 106 | s->add_note(NOTE_C4, 3); |
elleo | 0:ce6724069f0a | 107 | s->add_note(NOTE_C4, 1); |
elleo | 0:ce6724069f0a | 108 | s->add_note(NOTE_D4, 1); |
elleo | 0:ce6724069f0a | 109 | |
elleo | 0:ce6724069f0a | 110 | s->add_note(NOTE_C4, 3); |
elleo | 0:ce6724069f0a | 111 | } |
elleo | 0:ce6724069f0a | 112 | |
elleo | 0:ce6724069f0a | 113 | int main() { |
elleo | 0:ce6724069f0a | 114 | PluckedGuitar *g = new PluckedGuitar(); |
elleo | 0:ce6724069f0a | 115 | s.set_bpm(100); |
elleo | 0:ce6724069f0a | 116 | s.set_instrument(g); |
elleo | 0:ce6724069f0a | 117 | fly_me_to_the_moon(&s); |
elleo | 0:ce6724069f0a | 118 | s.set_repeat(true); |
elleo | 0:ce6724069f0a | 119 | s.play(); |
elleo | 0:ce6724069f0a | 120 | DigitalOut led1(LED1); |
elleo | 0:ce6724069f0a | 121 | DigitalOut led4(LED4); |
elleo | 0:ce6724069f0a | 122 | led1 = 1; |
elleo | 0:ce6724069f0a | 123 | while(1) { |
elleo | 0:ce6724069f0a | 124 | led1 = !led1; |
elleo | 0:ce6724069f0a | 125 | led4 = !led4; |
elleo | 0:ce6724069f0a | 126 | wait(1); |
elleo | 0:ce6724069f0a | 127 | } |
elleo | 0:ce6724069f0a | 128 | } |