Example program for USBHostMIDI http://mbed.org/users/kshoji/code/USBHostMIDI/
Dependencies: USBHostMIDI mbed
USB MIDI event handling examples for this library.
http://mbed.org/users/kshoji/code/USBHostMIDI/
main.cpp@0:78ea62ee7eab, 2013-12-05 (annotated)
- Committer:
- kshoji
- Date:
- Thu Dec 05 09:45:08 2013 +0000
- Revision:
- 0:78ea62ee7eab
- Child:
- 1:01305cc0e2a2
wrote example code.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kshoji | 0:78ea62ee7eab | 1 | #include "mbed.h" |
kshoji | 0:78ea62ee7eab | 2 | #include "USBHostMIDI.h" |
kshoji | 0:78ea62ee7eab | 3 | |
kshoji | 0:78ea62ee7eab | 4 | void noteOn(unsigned char channel, unsigned char note, unsigned char velocity) { |
kshoji | 0:78ea62ee7eab | 5 | printf("note on channel: %d, note: %d, velocity: %d\r\n", channel, note, velocity); |
kshoji | 0:78ea62ee7eab | 6 | } |
kshoji | 0:78ea62ee7eab | 7 | |
kshoji | 0:78ea62ee7eab | 8 | void noteOff(unsigned char channel, unsigned char note, unsigned char velocity) { |
kshoji | 0:78ea62ee7eab | 9 | printf("note off channel: %d, note: %d, velocity: %d\r\n", channel, note, velocity); |
kshoji | 0:78ea62ee7eab | 10 | } |
kshoji | 0:78ea62ee7eab | 11 | |
kshoji | 0:78ea62ee7eab | 12 | void controlChange(unsigned char channel, unsigned char key, unsigned char value) { |
kshoji | 0:78ea62ee7eab | 13 | printf("control change channel: %d, key: %d, value: %d\r\n", channel, key, value); |
kshoji | 0:78ea62ee7eab | 14 | } |
kshoji | 0:78ea62ee7eab | 15 | |
kshoji | 0:78ea62ee7eab | 16 | void programChange(unsigned char channel, unsigned char program) { |
kshoji | 0:78ea62ee7eab | 17 | printf("progaram change channel: %d, program: %d\r\n", channel, program); |
kshoji | 0:78ea62ee7eab | 18 | } |
kshoji | 0:78ea62ee7eab | 19 | |
kshoji | 0:78ea62ee7eab | 20 | void pitchBend(unsigned char channel, unsigned int value) { |
kshoji | 0:78ea62ee7eab | 21 | printf("pitch bend channel: %d, value: %d\r\n", channel, value); |
kshoji | 0:78ea62ee7eab | 22 | } |
kshoji | 0:78ea62ee7eab | 23 | |
kshoji | 0:78ea62ee7eab | 24 | void midi_task(void const*) { |
kshoji | 0:78ea62ee7eab | 25 | USBHostMIDI midi; |
kshoji | 0:78ea62ee7eab | 26 | |
kshoji | 0:78ea62ee7eab | 27 | // attach midi event callbacks |
kshoji | 0:78ea62ee7eab | 28 | midi.attachNoteOn(noteOn); |
kshoji | 0:78ea62ee7eab | 29 | midi.attachNoteOff(noteOff); |
kshoji | 0:78ea62ee7eab | 30 | midi.attachControlChange(controlChange); |
kshoji | 0:78ea62ee7eab | 31 | midi.attachProgramChange(programChange); |
kshoji | 0:78ea62ee7eab | 32 | midi.attachPitchBend(pitchBend); |
kshoji | 0:78ea62ee7eab | 33 | |
kshoji | 0:78ea62ee7eab | 34 | while(1) { |
kshoji | 0:78ea62ee7eab | 35 | // try to connect a midi device |
kshoji | 0:78ea62ee7eab | 36 | while(!midi.connect()) |
kshoji | 0:78ea62ee7eab | 37 | Thread::wait(500); |
kshoji | 0:78ea62ee7eab | 38 | |
kshoji | 0:78ea62ee7eab | 39 | // if the device is disconnected, we try to connect it again |
kshoji | 0:78ea62ee7eab | 40 | while (1) { |
kshoji | 0:78ea62ee7eab | 41 | // if device disconnected, try to connect it again |
kshoji | 0:78ea62ee7eab | 42 | if (!midi.connected()) |
kshoji | 0:78ea62ee7eab | 43 | break; |
kshoji | 0:78ea62ee7eab | 44 | |
kshoji | 0:78ea62ee7eab | 45 | Thread::wait(50); |
kshoji | 0:78ea62ee7eab | 46 | } |
kshoji | 0:78ea62ee7eab | 47 | } |
kshoji | 0:78ea62ee7eab | 48 | } |
kshoji | 0:78ea62ee7eab | 49 | |
kshoji | 0:78ea62ee7eab | 50 | int main() { |
kshoji | 0:78ea62ee7eab | 51 | Thread midiTask(midi_task, NULL, osPriorityNormal, 256 * 4); |
kshoji | 0:78ea62ee7eab | 52 | while(1) { |
kshoji | 0:78ea62ee7eab | 53 | Thread::wait(500); |
kshoji | 0:78ea62ee7eab | 54 | } |
kshoji | 0:78ea62ee7eab | 55 | } |