/* Select the MIDI OUT stream */\r
Endpoint_SelectEndpoint(MIDI_STREAM_OUT_EPNUM);\r
\r
- /* Check if endpoint is ready to be read from, if so discard its (unused) data */\r
+ /* Check if a MIDI command has been received */\r
if (Endpoint_IsOUTReceived())\r
- Endpoint_ClearOUT();\r
+ {\r
+ USB_MIDI_EventPacket_t MIDIEvent;\r
+ \r
+ /* Read the MIDI event packet from the endpoint */\r
+ Endpoint_Read_Stream_LE(&MIDIEvent, sizeof(MIDIEvent));\r
+ \r
+ if (MIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4))\r
+ {\r
+ /* Change LEDs depending on the pitch of the sent note */\r
+ LEDs_SetAllLEDs(MIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);\r
+ }\r
+ else\r
+ {\r
+ /* Turn off all LEDs in response to non-Note On messages */\r
+ LEDs_SetAllLEDs(LEDS_NO_LEDS);\r
+ }\r
+ \r
+ /* Clear the endpoint ready for new packet */\r
+ Endpoint_ClearOUT();\r
+ }\r
}\r