[wdmaudiodev] Windows MMEAPI MIDI corrupted system exclusive with embedded system realtime

  • From: wade dawson <wdawson61@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Fri, 23 Aug 2019 16:49:24 -0400

We have an Avstream-based multi-client, usb midi driver.  The device is
midi class compliant and will occasionally send MidiClock (0xf8) during
transmission of system exclusive blocks, like so:  0xF0 aa bb cc dd 0xF8 ee
ff gg 0xF7 which according to the MIDI spec is legal.  I have instrumented
the driver with WPP and have observed that we are correctly handing the
data to KsStreamPointerAdvanceOffsets(), applying the necessary
pseudo-documented rounding up to DWORD structure size.

The most common failure scenario is that the receiving application
interprets the remainder of the sysex as the last status byte sent.

If I defer writing the 0xf8's to the streamPointer until after the sysex
ends, there is no issue.

Is this a known issue in the MMEAPI?
Is there a workaround (other than what Im doing - deferring the
SystemRealtime) ?

(stepping up on soapbox...)

*From the Midi 1.0 spec:*

.*.. Exclusive messages can contain any number of Data bytes, and can be*

*terminated either by an End of Exclusive (EOX) or any other Status byte
(except*

*Real Time messages).*


(stepping down from soapbox...)

Thanks.

Other related posts:

  • » [wdmaudiodev] Windows MMEAPI MIDI corrupted system exclusive with embedded system realtime - wade dawson