A sample program to play eVY1 shield/module using USB-MIDI keyboard. USB-MIDIキーボードでeVY1 shield/moduleを演奏する単純なサンプルプログラムです。 See also following movie: mbedで簡単! USB-MIDIキーボードの利用法 http://www.nicovideo.jp/watch/sm25151897

Dependencies:   USBHost mbed

Dependents:   MIDI_FF14_Adapter

Committer:
ccutchy
Date:
Sat Dec 20 02:37:56 2014 +0000
Revision:
0:649db6499897
Initial version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ccutchy 0:649db6499897 1 #include "mbed.h"
ccutchy 0:649db6499897 2 #include "USBHostMIDI.h"
ccutchy 0:649db6499897 3 DigitalOut led(LED1);
ccutchy 0:649db6499897 4 RawSerial midi(p28, NC);
ccutchy 0:649db6499897 5 void onMidNoteOff (uint8_t ch, uint8_t key, uint8_t vel) { midi.putc(0x80|ch); midi.putc(key); midi.putc(vel); led = !led; }
ccutchy 0:649db6499897 6 void onMidNoteOn (uint8_t ch, uint8_t key, uint8_t vel) { midi.putc(0x90|ch); midi.putc(key); midi.putc(vel); led = !led; }
ccutchy 0:649db6499897 7 void onMidCtrlChg (uint8_t ch, uint8_t cc, uint8_t val) { midi.putc(0xB0|ch); midi.putc(cc); midi.putc(val); }
ccutchy 0:649db6499897 8 void onMidPitchBend (uint8_t ch, uint16_t val) { midi.putc(0xE0|ch); midi.putc(val&0x7F); midi.putc(val>>7); }
ccutchy 0:649db6499897 9 void onMidExclusive (uint8_t*, uint16_t, bool) {}
ccutchy 0:649db6499897 10 void onMid1byte (uint8_t) {}
ccutchy 0:649db6499897 11 void onMid2bytes (uint8_t, uint8_t) {}
ccutchy 0:649db6499897 12 void onMid3bytes (uint8_t, uint8_t, uint8_t) {}
ccutchy 0:649db6499897 13 void mid_task(void const *) {
ccutchy 0:649db6499897 14 USBHostMIDI mid;
ccutchy 0:649db6499897 15 mid.attachNoteOff (onMidNoteOff ); mid.attachNoteOn (onMidNoteOn );
ccutchy 0:649db6499897 16 mid.attachPolyKeyPress (onMid3bytes ); mid.attachControlChange (onMidCtrlChg );
ccutchy 0:649db6499897 17 mid.attachProgramChange (onMid2bytes ); mid.attachChannelPressure(onMid2bytes );
ccutchy 0:649db6499897 18 mid.attachPitchBend (onMidPitchBend ); mid.attachSystemExclusive(onMidExclusive );
ccutchy 0:649db6499897 19 mid.attachSystemCommonTwoBytes (onMid2bytes ); mid.attachSingleByte (onMid1byte );
ccutchy 0:649db6499897 20 mid.attachSystemCommonThreeBytes (onMid3bytes ); mid.attachCableEvent (onMid3bytes );
ccutchy 0:649db6499897 21 mid.attachMiscellaneousFunctionCode (onMid3bytes );
ccutchy 0:649db6499897 22 for(;;) { while(!mid.connect()) { Thread::wait(250); } led = 1;
ccutchy 0:649db6499897 23 while(mid.connected()) { Thread::wait(250); } led = 0; }
ccutchy 0:649db6499897 24 }
ccutchy 0:649db6499897 25 int main() {
ccutchy 0:649db6499897 26 midi.baud(31250);
ccutchy 0:649db6499897 27 DigitalOut hoge(P2_9); hoge = 1; // disable usb d+ pullup
ccutchy 0:649db6499897 28 Thread midTask(mid_task, NULL, osPriorityNormal, 1024);
ccutchy 0:649db6499897 29 const char aMsg[] = "\xF0\x43\x79\x09\x00\x50\x10" "j M,M,e,s M,b' i,i\0" "\xF7";
ccutchy 0:649db6499897 30 Thread::wait(3500); for(int i = 0; i < sizeof(aMsg)-1; midi.putc(aMsg[i++]));
ccutchy 0:649db6499897 31 for(;;) { Thread::wait(250); }
ccutchy 0:649db6499897 32 }