My porting of USBHostMIDI library Example.
Dependencies: F401RE-USBHost mbed
main.cpp@1:a03b21ba2647, 2014-09-17 (annotated)
- Committer:
- hsgw
- Date:
- Wed Sep 17 13:52:20 2014 +0000
- Revision:
- 1:a03b21ba2647
- Parent:
- 0:02a6abbd7331
- Child:
- 2:0ed13d8db901
change to USBHostMIDI in official USBHost lib
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hsgw | 0:02a6abbd7331 | 1 | #define _USB_TEST |
hsgw | 0:02a6abbd7331 | 2 | #include "mbed.h" |
hsgw | 0:02a6abbd7331 | 3 | #include "USBHostMIDI.h" |
hsgw | 0:02a6abbd7331 | 4 | |
hsgw | 0:02a6abbd7331 | 5 | DigitalOut led(LED1); |
hsgw | 1:a03b21ba2647 | 6 | Serial midiOut(PC_6,PA_12); |
hsgw | 0:02a6abbd7331 | 7 | |
hsgw | 0:02a6abbd7331 | 8 | void noteOn(unsigned char channel, unsigned char note, unsigned char velocity) { |
hsgw | 1:a03b21ba2647 | 9 | led = 1; |
hsgw | 1:a03b21ba2647 | 10 | // printf("note on channel: %d, note: %d, velocity: %d\r\n", channel, note, velocity); |
hsgw | 1:a03b21ba2647 | 11 | midiOut.putc(0x90); // status:ch0,noteon |
hsgw | 1:a03b21ba2647 | 12 | midiOut.putc(note); // data:noteNo |
hsgw | 1:a03b21ba2647 | 13 | midiOut.putc(velocity);// data: velocity |
hsgw | 0:02a6abbd7331 | 14 | } |
hsgw | 0:02a6abbd7331 | 15 | |
hsgw | 0:02a6abbd7331 | 16 | void noteOff(unsigned char channel, unsigned char note, unsigned char velocity) { |
hsgw | 1:a03b21ba2647 | 17 | led = 0; |
hsgw | 1:a03b21ba2647 | 18 | // printf("note off channel: %d, note: %d, velocity: %d\r\n", channel, note, velocity); |
hsgw | 1:a03b21ba2647 | 19 | midiOut.putc(0x80); // status:ch0,noteoff |
hsgw | 1:a03b21ba2647 | 20 | midiOut.putc(note); // data:noteNo |
hsgw | 1:a03b21ba2647 | 21 | midiOut.putc(velocity);// data: velocity |
hsgw | 0:02a6abbd7331 | 22 | } |
hsgw | 0:02a6abbd7331 | 23 | |
hsgw | 1:a03b21ba2647 | 24 | //void controlChange(unsigned char channel, unsigned char key, unsigned char value) { |
hsgw | 1:a03b21ba2647 | 25 | // printf("control change channel: %d, key: %d, value: %d\r\n", channel, key, value); |
hsgw | 1:a03b21ba2647 | 26 | //} |
hsgw | 1:a03b21ba2647 | 27 | // |
hsgw | 1:a03b21ba2647 | 28 | //void programChange(unsigned char channel, unsigned char program) { |
hsgw | 1:a03b21ba2647 | 29 | // printf("progaram change channel: %d, program: %d\r\n", channel, program); |
hsgw | 1:a03b21ba2647 | 30 | //} |
hsgw | 1:a03b21ba2647 | 31 | // |
hsgw | 1:a03b21ba2647 | 32 | //void pitchBend(unsigned char channel, unsigned int value) { |
hsgw | 1:a03b21ba2647 | 33 | // printf("pitch bend channel: %d, value: %d\r\n", channel, value); |
hsgw | 1:a03b21ba2647 | 34 | //} |
hsgw | 0:02a6abbd7331 | 35 | |
hsgw | 0:02a6abbd7331 | 36 | int main() { |
hsgw | 1:a03b21ba2647 | 37 | led = 1; |
hsgw | 1:a03b21ba2647 | 38 | USBHostMIDI usbmidi; |
hsgw | 1:a03b21ba2647 | 39 | midiOut.baud(31250); |
hsgw | 0:02a6abbd7331 | 40 | |
hsgw | 0:02a6abbd7331 | 41 | // attach midi event callbacks |
hsgw | 1:a03b21ba2647 | 42 | usbmidi.attachNoteOn(noteOn); |
hsgw | 1:a03b21ba2647 | 43 | usbmidi.attachNoteOff(noteOff); |
hsgw | 1:a03b21ba2647 | 44 | //usbmidi.attachControlChange(controlChange); |
hsgw | 1:a03b21ba2647 | 45 | //usbmidi.attachProgramChange(programChange); |
hsgw | 1:a03b21ba2647 | 46 | //usbmidi.attachPitchBend(pitchBend); |
hsgw | 0:02a6abbd7331 | 47 | |
hsgw | 0:02a6abbd7331 | 48 | while(1) { |
hsgw | 0:02a6abbd7331 | 49 | // try to connect a midi device |
hsgw | 1:a03b21ba2647 | 50 | while(!usbmidi.connect()) { |
hsgw | 0:02a6abbd7331 | 51 | wait_ms(500); |
hsgw | 1:a03b21ba2647 | 52 | led = 0; |
hsgw | 1:a03b21ba2647 | 53 | } |
hsgw | 1:a03b21ba2647 | 54 | |
hsgw | 1:a03b21ba2647 | 55 | led = 1; |
hsgw | 1:a03b21ba2647 | 56 | wait_ms(200); |
hsgw | 1:a03b21ba2647 | 57 | led = 0; |
hsgw | 1:a03b21ba2647 | 58 | wait_ms(200); |
hsgw | 1:a03b21ba2647 | 59 | led = 1; |
hsgw | 1:a03b21ba2647 | 60 | wait_ms(200); |
hsgw | 1:a03b21ba2647 | 61 | led = 0; |
hsgw | 1:a03b21ba2647 | 62 | wait_ms(200); |
hsgw | 1:a03b21ba2647 | 63 | led = 1; |
hsgw | 1:a03b21ba2647 | 64 | wait_ms(200); |
hsgw | 1:a03b21ba2647 | 65 | led = 0; |
hsgw | 0:02a6abbd7331 | 66 | |
hsgw | 0:02a6abbd7331 | 67 | // if the device is disconnected, we try to connect it again |
hsgw | 0:02a6abbd7331 | 68 | while (1) { |
hsgw | 0:02a6abbd7331 | 69 | // if device disconnected, try to connect it again |
hsgw | 1:a03b21ba2647 | 70 | if (!usbmidi.connected()) break; |
hsgw | 0:02a6abbd7331 | 71 | |
hsgw | 0:02a6abbd7331 | 72 | // polling USB task |
hsgw | 1:a03b21ba2647 | 73 | USBHost::poll(); |
hsgw | 0:02a6abbd7331 | 74 | } |
hsgw | 0:02a6abbd7331 | 75 | } |
hsgw | 0:02a6abbd7331 | 76 | } |