Marco Zecchini
/
Example_RTOS
Rtos API example
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "USBMIDI.h" 00003 00004 USBMIDI midi; 00005 Serial pc(USBTX, USBRX); 00006 00007 // MIDI IN 00008 void transmitMessage(MIDIMessage msg) { 00009 switch (msg.type()) { 00010 case MIDIMessage::NoteOnType: 00011 wait(0.1); 00012 midi.write(MIDIMessage::NoteOn(msg.key())); 00013 break; 00014 case MIDIMessage::NoteOffType: 00015 wait(0.1); 00016 midi.write(MIDIMessage::NoteOff(msg.key())); 00017 break; 00018 case MIDIMessage::ProgramChangeType: 00019 wait(0.1); 00020 midi.write(MIDIMessage::ProgramChange(msg.program())); 00021 break; 00022 case MIDIMessage::SysExType: 00023 wait(0.1); 00024 unsigned char tmp[64]; 00025 for(int i=0;i<msg.length-1;i++) { 00026 tmp[i]=msg.data[i+1]; 00027 } 00028 midi.write(MIDIMessage::SysEx(tmp,msg.length-1)); 00029 break; 00030 default: 00031 break; 00032 } 00033 } 00034 00035 int main(void) 00036 { 00037 wait(5); 00038 // MIDI OUT 00039 00040 // set piano 00041 midi.write(MIDIMessage::ProgramChange(1)); 00042 wait(0.1); 00043 00044 // play A 00045 midi.write(MIDIMessage::NoteOn(21)); 00046 wait(0.1); 00047 midi.write(MIDIMessage::NoteOff(21)); 00048 wait(0.1); 00049 00050 // GM reset 00051 unsigned char gm_reset[]={0xF0,0x7E,0x7F,0x09,0x01,0xF7}; 00052 midi.write(MIDIMessage::SysEx(gm_reset,6)); 00053 wait(0.1); 00054 00055 // GM Master volume max 00056 unsigned char gm_master_vol_max[]={0xF0,0x7F,0x7F,0x04,0x01,0x7F,0x7F,0xF7}; 00057 midi.write(MIDIMessage::SysEx(gm_master_vol_max,8)); 00058 wait(0.1); 00059 00060 // GS reset 00061 unsigned char gs_reset[]={0xF0,0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41,0xF7}; 00062 midi.write(MIDIMessage::SysEx(gs_reset,11)); 00063 wait(0.1); 00064 00065 // GS Master volume max 00066 unsigned char gs_master_vol_max[]={0xF0,0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D,0xF7}; 00067 midi.write(MIDIMessage::SysEx(gs_master_vol_max,11)); 00068 wait(0.1); 00069 00070 midi.attach(transmitMessage); 00071 00072 while(1); 00073 }
Generated on Sun Jul 17 2022 08:25:26 by 1.7.2