A MIDI piano synthesizer that implements the Karplus Strong physical modeling algorithm.

Dependencies:   mbed USBDevice PinDetect

Committer:
asuszek
Date:
Sun Apr 10 22:06:25 2016 +0000
Revision:
2:e21bd39bdf46
Parent:
0:cad8dafb22be
Child:
6:688698f814c0
Cleaned up main and added a class for constants.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
asuszek 2:e21bd39bdf46 1 /* Karplus Strong MIDI synthesizer.
asuszek 2:e21bd39bdf46 2 *
asuszek 2:e21bd39bdf46 3 * @author Austin Suszek
asuszek 2:e21bd39bdf46 4 * @author Nick Delfino
asuszek 2:e21bd39bdf46 5 */
asuszek 0:cad8dafb22be 6
asuszek 2:e21bd39bdf46 7 #include "Constants.h"
asuszek 0:cad8dafb22be 8 #include "mbed.h"
asuszek 0:cad8dafb22be 9 #include "USBMIDI.h"
asuszek 0:cad8dafb22be 10
asuszek 0:cad8dafb22be 11 Serial pc(USBTX, USBRX);
asuszek 0:cad8dafb22be 12 USBMIDI midi;
asuszek 0:cad8dafb22be 13
asuszek 2:e21bd39bdf46 14 void midiMessageReceived(MIDIMessage message);
asuszek 2:e21bd39bdf46 15
asuszek 2:e21bd39bdf46 16 int main() {
asuszek 2:e21bd39bdf46 17 // Attach the function to handle all incoming MIDI events.
asuszek 2:e21bd39bdf46 18 midi.attach(midiMessageReceived);
asuszek 2:e21bd39bdf46 19
asuszek 2:e21bd39bdf46 20 while (1) {}
asuszek 2:e21bd39bdf46 21 }
asuszek 2:e21bd39bdf46 22
asuszek 2:e21bd39bdf46 23 /*
asuszek 2:e21bd39bdf46 24 * The handler for all incoming MIDI messages.
asuszek 2:e21bd39bdf46 25 */
asuszek 0:cad8dafb22be 26 void midiMessageReceived(MIDIMessage message) {
asuszek 2:e21bd39bdf46 27 #ifdef DEBUG
asuszek 2:e21bd39bdf46 28 printf("Message Received\r\n");
asuszek 2:e21bd39bdf46 29 #endif
asuszek 0:cad8dafb22be 30
asuszek 0:cad8dafb22be 31 switch (message.type()) {
asuszek 0:cad8dafb22be 32 case MIDIMessage::NoteOnType:
asuszek 2:e21bd39bdf46 33 #ifdef DEBUG
asuszek 2:e21bd39bdf46 34 printf("\tType: Note On\r\n");
asuszek 2:e21bd39bdf46 35 printf("\tNote: %d\r\n", message.key());
asuszek 2:e21bd39bdf46 36 #endif
asuszek 0:cad8dafb22be 37 break;
asuszek 0:cad8dafb22be 38 case MIDIMessage::NoteOffType:
asuszek 2:e21bd39bdf46 39 #ifdef DEBUG
asuszek 2:e21bd39bdf46 40 printf("\tType: Note Off\r\n");
asuszek 2:e21bd39bdf46 41 #endif
asuszek 0:cad8dafb22be 42 break;
asuszek 0:cad8dafb22be 43 default:
asuszek 2:e21bd39bdf46 44 // no-op
asuszek 2:e21bd39bdf46 45 break;
asuszek 0:cad8dafb22be 46 }
asuszek 0:cad8dafb22be 47 }
asuszek 0:cad8dafb22be 48