Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are...
authorDean Camera <dean@fourwalledcubicle.com>
Thu, 26 Nov 2009 11:16:20 +0000 (11:16 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Thu, 26 Nov 2009 11:16:20 +0000 (11:16 +0000)
Demos/Device/ClassDriver/MIDI/MIDI.c
Demos/Device/LowLevel/MIDI/MIDI.c
LUFA/ManPages/ChangeLog.txt

index b704827..765bec6 100644 (file)
@@ -72,7 +72,7 @@ int main(void)
                MIDI_EventPacket_t ReceivedMIDIEvent;\r
                if (MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &ReceivedMIDIEvent))\r
                {\r
                MIDI_EventPacket_t ReceivedMIDIEvent;\r
                if (MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &ReceivedMIDIEvent))\r
                {\r
-                       if (ReceivedMIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4))\r
+                       if ((ReceivedMIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) && (ReceivedMIDIEvent.Data3 > 0))\r
                          LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);\r
                        else\r
                          LEDs_SetAllLEDs(LEDS_NO_LEDS);\r
                          LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);\r
                        else\r
                          LEDs_SetAllLEDs(LEDS_NO_LEDS);\r
index 2cdf711..cfd8148 100644 (file)
@@ -198,14 +198,15 @@ void MIDI_Task(void)
                /* Read the MIDI event packet from the endpoint */\r
                Endpoint_Read_Stream_LE(&MIDIEvent, sizeof(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
+               /* Check to see if the sent command is a note on message with a non-zero velocity */\r
+               if ((MIDIEvent.Command == (MIDI_COMMAND_NOTE_ON >> 4)) && (MIDIEvent.Data3 > 0))\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
                {\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
+                       /* Turn off all LEDs in response to non Note On messages */\r
                        LEDs_SetAllLEDs(LEDS_NO_LEDS);\r
                }\r
        \r
                        LEDs_SetAllLEDs(LEDS_NO_LEDS);\r
                }\r
        \r
index d06d913..8f7a410 100644 (file)
@@ -27,7 +27,9 @@
   *  - All Class Drivers now return false or the "DeviceDisconnected" error code of their respective error enums when a function\r
   *    is called when no host/device is connected where possible\r
   *  - The HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to HOST_SENDCONTROL_DeviceDisconnected to be in line\r
   *  - All Class Drivers now return false or the "DeviceDisconnected" error code of their respective error enums when a function\r
   *    is called when no host/device is connected where possible\r
   *  - The HOST_SENDCONTROL_DeviceDisconnect enum value has been renamed to HOST_SENDCONTROL_DeviceDisconnected to be in line\r
-  *    with the rest of the library errorcodes.\r
+  *    with the rest of the library errorcodes\r
+  *  - Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are sent with a velocity of zero,\r
+  *    which some devices use instead of Note Off messages (thanks to Robin Green)\r
   *\r
   *  <b>Fixed:</b>\r
   *  - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver\r
   *\r
   *  <b>Fixed:</b>\r
   *  - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver\r