Handle real-time MIDI SysEx messages

Bug #1467549 reported by Sean M. Pappalardo
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Low
Unassigned

Bug Description

According to http://www.midi.org/techspecs/midituning.php, universal real-time MIDI SysEx messages are of the form:

F0 7F ... F7

Add to Mixxx's MIDI handling the ability to accept these at any time (such as in the middle of any other non-real-time message, SysEx or otherwise.)

Tags: midi
description: updated
summary: - Handle real-time vs non-real-time MIDI SysEx messages
+ Handle real-time MIDI SysEx messages
description: updated
description: updated
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

A real-time sysex message can come in the middle of a non-real-time sysex message?

Also, you said "F0 7F ... F0" -- I think you meant: " F0 7F ... F7". The page you linked terminates every message with EOX -- realtime or non-realtime.

If sysex messages cannot interleave then we already interpret the real-time ones as a sysex blob since we match F0 .. F7 pairs.

If they can interleave that's pretty surprising because it implies a stack or at least some slush memory -- which for MIDI processors built onto an ASIC would complicate the circuit quite a bit.

description: updated
Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

Oops, yes I meant ending in F7. Typing too quick and not enough sleep last night. :)
My understanding is that yes indeed any real-time MIDI messages (SysEx and otherwise) can arrive at any time (and are expected to be handled ASAP.) Since the data bytes of a SysEx can not exceed 0x7F, this is possible.
Whether all MIDI devices properly handle them is another question, because many of them don't need to. E.g. controllers likely don't need to _receive_ real-time SysExes, but may _send_ them and expect Mixxx to handle them promptly. Since we do have access to resources to properly handle these cases, I think we should to future-proof ourselves. But it's not a priority at all since I don't know of any current controllers that use them. But once Owen's MIDI clock stuff makes it in, I can see other software intercommunicating with Mixxx via RT SysEx.

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

To follow up -- we determined that PortMIDI delivers realtime messages as a separate PmEvent, not in the middle of a message body. There's now a unit test that verifies we interact correctly with PortMIDI's API/convention.

Changed in mixxx:
status: Confirmed → Fix Released
milestone: none → 2.0.0
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/8119

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.