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.