]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / 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 }