-
Notifications
You must be signed in to change notification settings - Fork 95
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
Support for running status #301
Comments
I need to dig into this. I believe sending running status is unsupported by CoreMIDI, but I was under the impression that receiving should "just work" and be handled at the CoreMIDI level. As long as the status-less messages are delivered by CoreMIDI into MIKMIDI, we could handle the rest at the MIKMIDI level. |
Core MIDI does not reconstitute received running status messages, you'd need to handle them in the parser. |
@MicheleLonghi: I'm finally getting back to this. I don't seem to have any devices here that send messages using running status. I'm curious what device(s) you're using that do. |
I got ahold of a device that (reportedly) uses running status, however, as I expected, the messages it sends are reconstituted before they ever hit the Core MIDI APIs. That is, the read callback passed to @orchetect: I see that you've implemented explicit reconstitution of running status messages in MIDIKit. I'm curious to know what hardware/connection setup you know about that means this functionality is needed at the application level? |
Not sure if that's true but would be interesting to know.
Through testing and countless hours poking Core MIDI, for legacy MIDI 1.0 (not UMP), de-facto you need to fully implement running status in the parser when receiving packets. Even just using some dummy virtual MIDI endpoints in isolated unit tests can confirm that Core MIDI won't reconstitute them. It somewhat makes sense, since properly implementing RS means that Core MIDI would have to maintain state for each port, and clearly they didn't do that and felt for some reason that should be handled by the consumer. Some devices pack running status into a single packet, such as HUI control surfaces. And some MIDI keyboards I've used utilize running status globally. TL;DR per MIDI 1.0 Spec:
|
I'm unable to receive running status control changes: after the first, subsequent CC are dropped.
Thanks
The text was updated successfully, but these errors were encountered: