see http://mbed.org/users/okini3939/notebook/midi/
Dependencies: MIDI USBDevice mbed
Fork of MIDI_sample by
main.cpp
00001 #include "mbed.h" 00002 #include "USBMIDI.h" 00003 #include "MIDI.h" 00004 00005 DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4); 00006 Serial pc(USBTX, USBRX); 00007 00008 USBMIDI usbmidi; 00009 MIDI midi(p9, p10); 00010 00011 void show_message(MIDIMessage msg) { 00012 switch (msg.type()) { 00013 case MIDIMessage::NoteOffType: 00014 midi.sendNoteOff(msg.key(), msg.pitch(), msg.channel()); 00015 break; 00016 case MIDIMessage::NoteOnType: 00017 midi.sendNoteOn(msg.key(), msg.pitch(), msg.channel()); 00018 break; 00019 case MIDIMessage::PolyphonicAftertouchType: 00020 midi.sendPolyPressure(msg.key(), msg.pressure(), msg.channel()); 00021 break; 00022 case MIDIMessage::ControlChangeType: 00023 midi.sendControlChange(msg.controller(), msg.value(), msg.channel()); 00024 break; 00025 case MIDIMessage::ProgramChangeType: 00026 midi.sendProgramChange(msg.program(), msg.channel()); 00027 break; 00028 case MIDIMessage::ChannelAftertouchType: 00029 midi.sendAfterTouch(msg.pressure(), msg.channel()); 00030 break; 00031 case MIDIMessage::PitchWheelType: 00032 midi.sendPitchBend(msg.pitch(), msg.channel()); 00033 break; 00034 case MIDIMessage::AllNotesOffType: 00035 midi.sendControlChange(123, 0, msg.channel()); 00036 break; 00037 case MIDIMessage::ErrorType: 00038 default: 00039 led4 = 1; 00040 break; 00041 } 00042 led3 = 1; 00043 } 00044 00045 void isr_t () { 00046 led2 = 0; 00047 led3 = 0; 00048 led4 = 0; 00049 } 00050 00051 int main() { 00052 Ticker t; 00053 00054 led1 = 1; 00055 usbmidi.attach(show_message); 00056 midi.begin(); 00057 t.attach(isr_t, 0.1); 00058 00059 for (;;) { 00060 if (midi.read()) { 00061 MIDIMessage msg; 00062 msg.data[0] = CABLE_NUM | (midi.getType() >> 4); 00063 msg.data[1] = midi.getType() | midi.getChannel(); 00064 msg.data[2] = midi.getData1(); 00065 msg.data[3] = midi.getData2(); 00066 usbmidi.write(msg); 00067 led2 = 1; 00068 } 00069 } 00070 }
Generated on Thu Jul 21 2022 07:11:47 by 1.7.2