X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/059ebd01a3f34ce288adfe30c6cd5b88553882fa..89c837ee34db186f7b1f859f767d587036573c4c:/Demos/Device/LowLevel/MIDI/MIDI.c?ds=inline diff --git a/Demos/Device/LowLevel/MIDI/MIDI.c b/Demos/Device/LowLevel/MIDI/MIDI.c index 4dfb9b7e6..c4ec8941f 100644 --- a/Demos/Device/LowLevel/MIDI/MIDI.c +++ b/Demos/Device/LowLevel/MIDI/MIDI.c @@ -190,7 +190,26 @@ void MIDI_Task(void) /* Select the MIDI OUT stream */ Endpoint_SelectEndpoint(MIDI_STREAM_OUT_EPNUM); - /* Check if endpoint is ready to be read from, if so discard its (unused) data */ + /* Check if a MIDI command has been received */ if (Endpoint_IsOUTReceived()) - Endpoint_ClearOUT(); + { + USB_MIDI_EventPacket_t MIDIEvent; + + /* Read the MIDI event packet from the endpoint */ + Endpoint_Read_Stream_LE(&MIDIEvent, sizeof(MIDIEvent)); + + if (MIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) + { + /* Change LEDs depending on the pitch of the sent note */ + LEDs_SetAllLEDs(MIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2); + } + else + { + /* Turn off all LEDs in response to non-Note On messages */ + LEDs_SetAllLEDs(LEDS_NO_LEDS); + } + + /* Clear the endpoint ready for new packet */ + Endpoint_ClearOUT(); + } }