Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
                /** MIDI command for a note on (activation) event. */
                #define MIDI_COMMAND_NOTE_ON        0x90
 
                /** MIDI command for a note off (deactivation) event. */
                #define MIDI_COMMAND_NOTE_OFF       0x80
                /** MIDI command for a note on (activation) event. */
                #define MIDI_COMMAND_NOTE_ON        0x90
 
                /** MIDI command for a note off (deactivation) event. */
                #define MIDI_COMMAND_NOTE_OFF       0x80
 
                        uint16_t bcdMSC; /**< Binary coded decimal value, indicating the supported MIDI Class specification version. */
                        uint16_t wTotalLength; /**< Total length of the Audio class-specific descriptors, including this descriptor. */
 
                        uint16_t bcdMSC; /**< Binary coded decimal value, indicating the supported MIDI Class specification version. */
                        uint16_t wTotalLength; /**< Total length of the Audio class-specific descriptors, including this descriptor. */
                        USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
                        uint8_t                 Subtype; /**< Sub type value used to distinguish between audio class-specific descriptors. */
 
                        USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
                        uint8_t                 Subtype; /**< Sub type value used to distinguish between audio class-specific descriptors. */
 
                        uint8_t                 JackID; /**< ID value of this jack - must be a unique value within the device. */
 
                        uint8_t                 JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device. */
                        uint8_t                 JackID; /**< ID value of this jack - must be a unique value within the device. */
 
                        uint8_t                 JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device. */
                        uint8_t  bJackID; /**< ID value of this jack - must be a unique value within the device. */
 
                        uint8_t  iJack; /**< Index of a string descriptor describing this descriptor within the device. */
                        uint8_t  bJackID; /**< ID value of this jack - must be a unique value within the device. */
 
                        uint8_t  iJack; /**< Index of a string descriptor describing this descriptor within the device. */
                        USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length. */
                        uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class-specific descriptors. */
 
                        USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length. */
                        uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class-specific descriptors. */
 
                        uint8_t                   JackID; /**< ID value of this jack - must be a unique value within the device. */
 
                        uint8_t                   NumberOfPins; /**< Number of output channels within the jack, either physical or logical. */
                        uint8_t                   JackID; /**< ID value of this jack - must be a unique value within the device. */
 
                        uint8_t                   NumberOfPins; /**< Number of output channels within the jack, either physical or logical. */
                        uint8_t                   SourcePinID[1]; /**< Pin number in the input jack of each output pin's source data. */
 
                        uint8_t                   JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device. */
                        uint8_t                   SourcePinID[1]; /**< Pin number in the input jack of each output pin's source data. */
 
                        uint8_t                   JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device. */
                        uint8_t  bJackID; /**< ID value of this jack - must be a unique value within the device. */
 
                        uint8_t  bNrInputPins; /**< Number of output channels within the jack, either physical or logical. */
                        uint8_t  bJackID; /**< ID value of this jack - must be a unique value within the device. */
 
                        uint8_t  bNrInputPins; /**< Number of output channels within the jack, either physical or logical. */
                        uint8_t  baSourcePin[1]; /**< Pin number in the input jack of each output pin's source data. */
 
                        uint8_t  iJack; /**< Index of a string descriptor describing this descriptor within the device. */
                        uint8_t  baSourcePin[1]; /**< Pin number in the input jack of each output pin's source data. */
 
                        uint8_t  iJack; /**< Index of a string descriptor describing this descriptor within the device. */
 
                        uint8_t                   TotalEmbeddedJacks; /**< Total number of jacks inside this endpoint. */
                        uint8_t                   AssociatedJackID[1]; /**< IDs of each jack inside the endpoint. */
 
                        uint8_t                   TotalEmbeddedJacks; /**< Total number of jacks inside this endpoint. */
                        uint8_t                   AssociatedJackID[1]; /**< IDs of each jack inside the endpoint. */
 
                        uint8_t  bNumEmbMIDIJack; /**< Total number of jacks inside this endpoint. */
                        uint8_t  bAssocJackID[1]; /**< IDs of each jack inside the endpoint. */
 
                        uint8_t  bNumEmbMIDIJack; /**< Total number of jacks inside this endpoint. */
                        uint8_t  bAssocJackID[1]; /**< IDs of each jack inside the endpoint. */
                        uint8_t Data1; /**< First byte of data in the MIDI event. */
                        uint8_t Data2; /**< Second byte of data in the MIDI event. */
                        uint8_t Data3; /**< Third byte of data in the MIDI event. */
                        uint8_t Data1; /**< First byte of data in the MIDI event. */
                        uint8_t Data2; /**< Second byte of data in the MIDI event. */
                        uint8_t Data3; /**< Third byte of data in the MIDI event. */