[TODO]: Timing of MIDI 2.0 discovery and protocol negotiation can cause confusion
@Psychlist1972 is already working on this.
Since Feb 1, 2026.
- Dominant language
- C++
- Stars
- 679
- Forks
- 72
- Avg merge
- 4h 51m
- Merged PRs (30d)
- 59
Description
When a MIDI 2.0 device is plugged in, or when the service starts up with already-connected MIDI 2.0 devices, MIDI 2.0 discovery and protocol negotiation takes place. Discovery and Protocol Negotiation are important parts of the MIDI 2.0 protocol specification.
Depending upon the device, it can take a number of seconds for MIDI 2.0 discovery, including retrieving function blocks and their names, to complete. Some are taking longer than 5 seconds depending upon the state they are in when Discovery is initiated.
If, during that time, a customer starts up a MIDI 1.0 app, the app may not get all the correct MIDI 1.0 ports, as those apps often do not refresh port information or names after starting up.
We could consider not making any MIDI 2.0 device available until after MIDI 2.0 discovery has timed out or completed. This would require some changes in how we make devices available, and what mechanism we use for opening the device for MIDI 2.0 discovery.
Additionally, the current default MIDI 2.0 discovery and protocol negotiation timeout is 5 seconds. This can be changed through the Developer settings in the MIDI Settings app, but only when Developer mode is on.
We create the MIDI 1.0 ports for the Function Blocks (or Group Terminal Blocks) after discovery has completed or timed out.
The downside to changing this is the obvious feedback lag when plugging in a MIDI 2.0 device, so we may need to indicate that it is connected, but in a "pending" or similar state. We don't have an equivalent of this today, and it wouldn't provide any clarity for MIDI 1.0 API-using apps.
Tasks
- Move the MIDI 2.0 discovery timeout to the Global MIDI Settings page in the MIDI Settings app, so it is not gated by Developer Mode
- Consider changing how MIDI 2.0 Endpoints and the MIDI 1.0 ports are made available, as per the above information.
- Consider a way to indicate to the customer that the device is connected and found, but not yet ready.
Before changing the fundamentals of how the above works, we'll want to see more MIDI 2.0 devices and understand the trends in discovery timing.
Workarounds today
When plugging in a MIDI 2.0 device, wait up to 10 seconds before starting up any MIDI 1.0 API apps.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.