]> git.gir.st - tmk_keyboard.git/blob - tmk_core/tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp
Merge commit '1fe4406f374291ab2e86e95a97341fd9c475fcb8'
[tmk_keyboard.git] / tmk_core / tool / mbed / mbed-sdk / libraries / tests / usb / device / midi / main.cpp
1 #include "mbed.h"
2 #include "USBMIDI.h"
3
4 USBMIDI midi;
5 Serial pc(USBTX, USBRX);
6
7 // MIDI IN
8 void transmitMessage(MIDIMessage msg) {
9 switch (msg.type()) {
10 case MIDIMessage::NoteOnType:
11 wait(0.1);
12 midi.write(MIDIMessage::NoteOn(msg.key()));
13 break;
14 case MIDIMessage::NoteOffType:
15 wait(0.1);
16 midi.write(MIDIMessage::NoteOff(msg.key()));
17 break;
18 case MIDIMessage::ProgramChangeType:
19 wait(0.1);
20 midi.write(MIDIMessage::ProgramChange(msg.program()));
21 break;
22 case MIDIMessage::SysExType:
23 wait(0.1);
24 unsigned char tmp[64];
25 for(int i=0;i<msg.length-1;i++) {
26 tmp[i]=msg.data[i+1];
27 }
28 midi.write(MIDIMessage::SysEx(tmp,msg.length-1));
29 break;
30 default:
31 break;
32 }
33 }
34
35 int main(void)
36 {
37 wait(5);
38 // MIDI OUT
39
40 // set piano
41 midi.write(MIDIMessage::ProgramChange(1));
42 wait(0.1);
43
44 // play A
45 midi.write(MIDIMessage::NoteOn(21));
46 wait(0.1);
47 midi.write(MIDIMessage::NoteOff(21));
48 wait(0.1);
49
50 // GM reset
51 unsigned char gm_reset[]={0xF0,0x7E,0x7F,0x09,0x01,0xF7};
52 midi.write(MIDIMessage::SysEx(gm_reset,6));
53 wait(0.1);
54
55 // GM Master volume max
56 unsigned char gm_master_vol_max[]={0xF0,0x7F,0x7F,0x04,0x01,0x7F,0x7F,0xF7};
57 midi.write(MIDIMessage::SysEx(gm_master_vol_max,8));
58 wait(0.1);
59
60 // GS reset
61 unsigned char gs_reset[]={0xF0,0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41,0xF7};
62 midi.write(MIDIMessage::SysEx(gs_reset,11));
63 wait(0.1);
64
65 // GS Master volume max
66 unsigned char gs_master_vol_max[]={0xF0,0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D,0xF7};
67 midi.write(MIDIMessage::SysEx(gs_master_vol_max,11));
68 wait(0.1);
69
70 midi.attach(transmitMessage);
71
72 while(1);
73 }
Imprint / Impressum