Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle real-time MIDI SysEx messages #8119

Closed
mixxxbot opened this issue Aug 22, 2022 · 4 comments
Closed

Handle real-time MIDI SysEx messages #8119

mixxxbot opened this issue Aug 22, 2022 · 4 comments
Milestone

Comments

@mixxxbot
Copy link
Collaborator

Reported by: Pegasus-RPG
Date: 2015-06-22T14:30:52Z
Status: Fix Released
Importance: Low
Launchpad Issue: lp1467549
Tags: midi


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.)

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2015-06-22T15:31:32Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: Pegasus-RPG
Date: 2015-06-22T16:10:14Z


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.

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2015-12-31T07:21:03Z


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.

@mixxxbot
Copy link
Collaborator Author

Issue closed with status Fix Released.

@mixxxbot mixxxbot transferred this issue from another repository Aug 24, 2022
@mixxxbot mixxxbot added this to the 2.0.0 milestone Aug 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant