My porting of USBHostMIDI library Example.

Dependencies:   F401RE-USBHost mbed

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?

UserRevisionLine numberNew 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 }