From 2a28862dcc6a8e5fcf7c8015f67b3eee4716fef6 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Thu, 26 Nov 2009 11:16:20 +0000 Subject: [PATCH] Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are sent with a velocity of zero, which some devices use instead of Note Off messages (thanks to Robin Green). --- Demos/Device/ClassDriver/MIDI/MIDI.c | 2 +- Demos/Device/LowLevel/MIDI/MIDI.c | 5 +++-- LUFA/ManPages/ChangeLog.txt | 4 +++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Demos/Device/ClassDriver/MIDI/MIDI.c b/Demos/Device/ClassDriver/MIDI/MIDI.c index b704827871..765bec65d8 100644 --- a/Demos/Device/ClassDriver/MIDI/MIDI.c +++ b/Demos/Device/ClassDriver/MIDI/MIDI.c @@ -72,7 +72,7 @@ int main(void) MIDI_EventPacket_t ReceivedMIDIEvent; if (MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &ReceivedMIDIEvent)) { - if (ReceivedMIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) + if ((ReceivedMIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) && (ReceivedMIDIEvent.Data3 > 0)) LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2); else LEDs_SetAllLEDs(LEDS_NO_LEDS); diff --git a/Demos/Device/LowLevel/MIDI/MIDI.c b/Demos/Device/LowLevel/MIDI/MIDI.c index 2cdf71152d..cfd81486ae 100644 --- a/Demos/Device/LowLevel/MIDI/MIDI.c +++ b/Demos/Device/LowLevel/MIDI/MIDI.c @@ -198,14 +198,15 @@ void MIDI_Task(void) /* Read the MIDI event packet from the endpoint */ Endpoint_Read_Stream_LE(&MIDIEvent, sizeof(MIDIEvent)); - if (MIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) + /* Check to see if the sent command is a note on message with a non-zero velocity */ + if ((MIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) && (MIDIEvent.Data3 > 0)) { /* 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 */ + /* Turn off all LEDs in response to non Note On messages */ LEDs_SetAllLEDs(LEDS_NO_LEDS); } diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index d06d91399c..8f7a410ffc 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -27,7 +27,9 @@ * - All Class Drivers now return false or the "DeviceDisconnected" error code of their respective error enums when a function * is called when no host/device is connected where possible * - The HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to HOST_SENDCONTROL_DeviceDisconnected to be in line - * with the rest of the library errorcodes. + * with the rest of the library errorcodes + * - Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are sent with a velocity of zero, + * which some devices use instead of Note Off messages (thanks to Robin Green) * * Fixed: * - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver