Hi all, I'm new here. I have a question, and I think this post is the closest I've found to something similar.
I'm working on adding USB MIDI functionality according to the USB MIDI v1.0 spec. The device uses a musb controller. I'm noticing this behavior when debugging while connected to a Windows host running Midi-ox, class-compliant driver.
- When I send a non-sysex message from Midi-ox, each USB packet received at the device contains a single 32-bit USB-MIDI Event packet, corresponding to a single MIDI message.
- When I send a sysex message from Midi-ox, the USB packet received at the device contains multiple USB-MIDI Event packets up to the endpoint max packet size.
- So far I haven't seen any realtime (or other status) USB-MIDI Event packets in the middle of a USB packet containing a string of sysex USB-MIDI Event packets.
I've tried to find a description of this behavior in the USB and class specifications, but I can't seem to find it. For now to make sure I'm following the specifications, I'm processing each USB-MIDI Event separately, but it would be really convenient if I could assume that a single USB packet contains only one MIDI message with no interleaved realtime packets.
So my question is: is this behavior defined by specification or by the OS/driver/application?
I'd be very grateful for any help! Some of the terminology in the USB specs is a little beyond my current level of understanding.