microsoft/MIDI rc-4
microsoft/MIDI
Captured source
source ↗App SDK Runtime and Tools Release Candidate 4
Repository: microsoft/MIDI
Tag: rc-4
Published: 2026-04-12T21:58:40Z
Prerelease: yes
Release notes:
Quality
| Component | Stage | | ------------- | ------ | | App SDK Runtime | Release Candidate. NOTE ABI changes below. | | MIDI Settings app | Preview. This is still beta-quality and is in active development | | MIDI Console app | Preview. This is quite stable at this point | | Other tools | Other tools like midi1monitor, mididiag etc. are all stable |
Instructions
We recommend uninstalling the old version of the SDK Runtime and Tools from Settings > Apps > Installed Apps (Settings, not control panel) before installing this version. You do not need to uninstall any service plugins.
Download the version appropriate for your architecture (Arm64: Qualcomm and similar, x64: AMD, Intel) and double-click to install. You do not need to run the installer as Administrator -- Windows 11 UAC will prompt for admin rights during installation.
This installer is not signed, so you will receive warnings when downloading and installing it. Some third-party antivirus may actually delete the app after it has been installed, or may prevent the installer itself from working properly. Refer to your antivirus/antimalware software documentation for how to add a temporary or permanent exclusion.
If you want the MIDI 1.0 loopbacks
Until these are in the main Windows releases, please use the Service Plugin installers from the rc3 release. The MIDI Settings app will work with those builds.
If you want the Network MIDI 2.0 Preview
Functional Changes
Endpoint Image Handling
- This is a breaking change for apps using the endpoint images. We now copy the image to an intermediate location and point everything to that. As a result, we no longer store the full path in the Endpoint properties, but simply the image file name.
MidiImageAssetHelperhas been updated withGetFullImageAssetPathForEndpointImageto return the full path of the image for the endpoint.
SDK
Important ABI Change
After some discussion on Discord, it was agreed that service transactions such as creating new loopback endpoints needs to have an app-accessible return code, at least in the case of errors. To support this, it required a few ABI changes which require recompiling applications that use any of these types.
This also means that apps which take a dependency on RC4 (and eventually 1.0) will not work with runtime installations earlier than RC4.
Microsoft.Windows.Devices.Midi2.ServiceConfig.MidiServiceConfigResponse: Remains a struct, but now has a UInt32ServiceCodefield.Microsoft.Windows.Devices.Midi2.ServiceConfig.MidiServiceConfig(due to above change)Microsoft.Windows.Devices.Midi2.Endpoints.Loopback.MidiLoopbackEndpointCreationResultchanged from astructto aruntimeclass, and adds theErrorCodefield, and changes the clsidMicrosoft.Windows.Devices.Midi2.Endpoints.BasicLoopback.MidiBasicLoopbackEndpointCreationResultchanged from astructto aruntimeclass, and adds theErrorCodefield, and changes the clsid- Addition of the following enums
MidiLoopbackEndpointCreationResultErrorCodeMidiBasicLoopbackEndpointCreationResultErrorCode
Because runtime types have getter/setter semantics and not fields like structs, C++ clients will need to change calls to fields like Status into function calls like Status(); C# clients use the same syntax for both.
In all cases, the Success property is still required to know if the call worked. If the call failed, the ErrorCode property may contain an error code. Note that this is going to require synchronizing with new code in the service, which will take several months. Until that time, the code will be NoErrorInformationAvailable for anything which failed service-side.
Result error codes are not guaranteed to be interchangeable across transports.
Additional Changes
- Additional exception handling in MIDI SDK functions for adding/removing loopback endpoints
- Basic Loopback and MIDI 2.0 loopbacks now create default unique ids if not specified at creation time
- Basic and MIDI 2 loopback creation will now do some basic validation of the data before sending to service
- SDK will now show better error information in some cases when dynamic port creation (loopbacks, virtual device) fails in the service. Previously, when the service returned a failed HRESULT, it would not look for error information. That's technically the correct approach, but the service is already in production, so not going to change that behavior.
- Added functions to
MidiMessageConverterclass to support converting streams of data and text
Command-line tools
midifixregnow fixes both the 64 bit and 32 bit registry locations which can get corrupted by KORG and other driver utilities and uninstallers.midifixregwill not remove some well-known third-party drivers like the KORG BLE driver, VirtualMIDISynth, and MIDIMapper. If you see other entries we should leave in place, please do let us know on Discord or as a new issue in this repomididiagnow outputs both the 64 and 32 bit registry locations
Settings app
- The MIDI Settings app no longer refuses to start if the feature is not enabled. This was done because nearly all consumer PCs now have Windows MIDI Services enabled. This has made it possible to incorporate the registry fixing and other troubleshooting tools into MIDI Settings
- Added feature to the Troubleshooting page to view and repair registry entries (midifixreg)
- Added feature to the Troubleshooting page to capture MIDI repro logs
- The transports page now shows the full path of the implementation dll for transport plugins. This makes it easy to see if you are running in-box components, or preview components.
- We now have a page for the service transform/processing plugins so those paths can also be…
Excerpt shown — open the source for the full document.
Notability
notability 4.0/10Routine release candidate, no traction data