NOW LOADING

Windows MIDI Troubleshooting and Repair


Check the health of MIDI on this PC, collect diagnostics for support, and repair common problems

This page covers information about a Windows MIDI Services feature and application that will be released to consumers in 2027. It’s currently available for developers.

Windows MIDI Troubleshooting and Repair is where you go when MIDI on this PC isn’t behaving. It shows you what Windows MIDI Services thinks the state of the machine is, collects the reports support will ask for, and fixes the handful of things that commonly get broken by other software.

Most of what it does needs administrator rights, so it asks for them when it starts. If you say no, it still runs: the diagnostics and the informational pages work, and a banner across the top offers to restart it with the rights it needs.

Quick start

The Windows MIDI Troubleshooting and Repair window, with numbered callouts on the system information strip, the administrator banner, the Diagnostics and Capture repro log pages, and the rest of the pages

  1. The strip at the top shows the version of Windows, the architecture, your language and region, the Windows App SDK version, the current API mode, and whether Developer Mode is on. That’s the first thing support asks for, so it stays visible wherever you are in the app.
  2. This banner appears when the app isn’t running as administrator. Restart as administrator gives it the rights it needs for repairs.
  3. Diagnostics and Capture repro log collect the reports and traces that support will ask for.
  4. The other pages show the state of the MIDI service, its transports, the registry, and the drivers, and fix the common problems.

Overview

The app opens on the Overview. It runs every check from the other pages in the background as soon as the app starts, and shows the results as colored cards: the MIDI service, the transports, the registry, the USB MIDI devices and their drivers, the apps using MIDI, recent crashes, the API mode and the MMCSS settings. Each card fills in when its check finishes, and each one links to the page with the details.

  • Green means healthy, yellow means worth a look, and red means something is broken. Blue cards are information only.
  • The Transports card splits the transports that are part of Windows from the preview transports installed in Program Files. The Devices card does the same for the new MIDI driver, the classic driver and vendor drivers.
  • The banner at the top lists everything that needs attention, with a link to the page that fixes it. When the list is empty, it says so.
  • Pages with a problem also get a small yellow or red dot in the navigation, so you can see them from anywhere in the app.

The DPC latency check takes a minute and records a trace, so it never runs by itself. Its card links to the page where you can start it.

In Legacy MIDI mode, the API mode card comes first, says what Legacy mode turns off, and links to the API mode page. The MIDI service, Transports and Active sessions cards turn gray and say they aren’t used, because Legacy mode doesn’t use the MIDI service. A stopped service isn’t reported as a problem. Those three pages stay in the menu and show a note saying the same thing.

API mode

Windows can run MIDI in one of three modes. This page shows which one this PC is using, explains what each one gives you and takes away, and lets you change it.

The mode is a machine-wide setting and does not take effect until Windows restarts, so changing it here writes the setting and then asks whether you want to restart now. Nothing reboots without you saying so.

  • Windows MIDI Services is the default and what you want unless you have a specific reason not to. Multi-client access, loopback endpoints, Network MIDI 2.0, Bluetooth LE MIDI, MIDI 2.0 devices and the combined MIDI 1.0 and MIDI 2.0 class driver.
  • Legacy MIDI puts the PC back on the MIDI stack as it was before Windows MIDI Services. Choose it if you have an application, driver or device that isn’t compatible, or you need legacy WinMM user-mode drivers or DirectMusic drivers.
  • Hybrid is not recommended for most customers. Devices on a MIDI 1.0 driver are visible only to the old APIs, devices on the new class driver only to the new API, and the two do not see each other.

There’s more detail in How to change the API mode.

Diagnostics

Two reports, each with a button to run it, a box showing the output, and Copy all and Save as buttons. mididiag also has Save as zip and View report.

The two diagnostic reports, with output

mididiag is the broad one. It walks the registry, the transports, every MIDI endpoint the service knows about and the old MIDI 1.0 APIs, and reports what it found. It ends with a short list of findings, things worth a look written as plain sentences.

View report opens the mididiag report in a window of its own, where it’s much easier to read than the plain text. The findings come first, then any errors in red, then one line for each section that opens to show what’s in it, and lists such as the ports become tables. If you haven’t run the report yet, it asks for a file instead, so you can also read a report somebody sent you. It opens the zip file the report came in, too.

midiksinfo is the narrow one, for USB and other kernel streaming devices. If a device isn’t showing up, or is showing up with the wrong number of ports or the wrong names, this is the report that says why.

Both can take a minute or two on a machine with a lot of hardware attached. For a GitHub issue, save mididiag with Save as zip and attach the zip file. The full text is often too long to paste into an issue. For email to support, attach the saved files.

If mididiag finds that the MIDI service has stopped answering, a banner offers Save a memory dump. The dump shows the developers where the service is stuck, so save it before you restart the PC, because restarting clears the problem and the evidence with it. Saving it needs administrator rights. The dump can hold private information, such as device names and network MIDI passwords, so share it only with the developers who asked for it.

Capture repro log

This is the one to use when somebody asks you for “a trace”. It replaces the older CollectMidiLogs script, and does the whole job inside the app.

Choosing what to include in a repro log capture

Choose what to include, select Start capture, reproduce whatever is going wrong, then select Stop and save. You’re asked where to put the zip file, and Explorer opens with it selected when it’s done.

By default the package contains:

  • an ETW trace of the MIDI service, the MIDI components in Windows and the Windows MIDI Services apps, recorded while you reproduced the problem
  • a time travel trace of the MIDI service and of any Windows MIDI Services app that’s open when you start, which lets an engineer step backwards through what each one actually did
  • a list of the Windows MIDI Services apps that were open, and the MIDI libraries each one had loaded
  • the mididiag and midiksinfo reports
  • ddodiag, dxdiag and an export of the plug and play state
  • a summary of this PC and the state of the MIDI service

A time travel trace makes the package much larger, but it is very often the thing that lets us find a problem from a single capture instead of asking you to reproduce it again, so it’s on by default.

If the problem shows up in one of the Windows MIDI Services apps, such as Windows MIDI Monitor, midi1monitor or midi1rtmonitor, open that app before you select Start capture. Only apps that are already open get a time travel trace. An app you open later still shows up in the ETW trace, but with less detail. This only covers the apps that come with Windows MIDI Services. It doesn’t record your DAW or other music apps.

The two kinds of trace show different things:

  • The ETW trace has the events that the MIDI service, the Windows MIDI Services SDK, WinMM’s MIDI driver (wdmaud2) and the apps write, plus which libraries each app loaded. It doesn’t list every call an app makes into Windows.Devices.Midi, Windows.Devices.Midi2 or WinMM, or what each call returned.
  • The time travel trace records everything an app did, including every call into those libraries and its result. An engineer can replay it in WinDbg.

Time travel tracing isn’t available on every build of Windows, and it can be refused if the service or an app is running with certain security mitigations. If that happens, the capture carries on without it and says so in the log, rather than failing. A traced app stays slow after the capture, so close it and open it again when you’re done.

DPC latency check

Clicks, pops and dropouts are sometimes caused by a driver somewhere else on the PC, such as the Wi-Fi, graphics or storage driver, that keeps a processor busy for too long. This page finds out which one.

It isn’t a benchmark. Use it when you already hear clicks, pops or dropouts at a buffer size that should be big enough for your project. If your audio sounds fine, there’s nothing to fix.

Choose how long to check, select Start check, and use your PC the way you do when you hear problems, ideally playing your project in your audio app. Recording needs administrator rights. When it’s done, you get:

  • the answer, in one line: whether anything actually held up audio, MIDI or the test thread while the check ran, and for how long
  • what held audio up: each driver that did, the company that made it, its version and the device it drives, how long it held a processor, and what to try
  • what also ran long: drivers that kept a processor busy but didn’t hold anything up, which are only worth a look if glitches go on
  • a technical report in the same format as mididiag’s, for support and for driver makers, and optionally a trace file for Windows Performance Analyzer

Open a trace file checks a trace you saved earlier, or one from Windows Performance Recorder, without administrator rights.

The check changes nothing on your PC, installs no driver, and works on x64 and Arm64. There’s much more about what it measures and what to do about it in Find what makes audio late on your PC (DPC latency).

Crash dumps

When a Windows MIDI Services app stops unexpectedly, Windows saves a crash dump. It’s a snapshot of the app’s memory at the moment it crashed, and it shows the developers what went wrong. This page lists the dumps on your PC and helps you share them.

You don’t have to come here yourself. When one of the Windows MIDI Services apps crashes, this app opens on the Crash dumps page and says which app stopped. It waits a few seconds while Windows finishes the dump, then offers Show the crash dump. It doesn’t ask for administrator rights when it opens this way.

Save a MIDI service dump saves a memory dump of the MIDI service too. If an app crashed or froze while it was using MIDI, the two dumps together show the developers what each side was doing. Save it straight away, before you restart the service or your PC, because a restart clears what the dump would show. It needs administrator rights, so you’ll see a Windows prompt if the app doesn’t have them yet.

Under Saved dumps you can open the folder, save the dumps you select in one zip file to attach to a GitHub issue, and delete the ones you don’t need.

Some things to know:

  • The dumps stay on your PC, in %LOCALAPPDATA%\Microsoft\MIDI\CrashDumps, with a folder for each app. Nothing is sent from here.
  • Windows keeps the 10 newest dumps for each app and deletes the oldest when it saves a new one. This page does the same for MIDI service dumps.
  • This covers the apps that come with Windows MIDI Services, including the console tools. It doesn’t cover your DAW or other music apps.
  • A dump can hold personal information, such as file names, device names and network MIDI passwords. Share it only with the developers who asked for it.

Active sessions

Every application currently connected to the MIDI service, with the process it belongs to and when it started. Expand one to see which endpoints and MIDI 1.0 ports it has open, what kind of transport each one uses, how many times each is open, and since when. The copy button on each row copies the endpoint’s device id, which support sometimes asks for.

The applications connected to the MIDI service and what each has open

This page is purely informational; there is nothing to change here. It’s for answering the question “what has that device open?” when something reports a device as busy or in use.

Transports

Transports are the pieces of the MIDI service that talk to a particular kind of device: USB, Network MIDI 2.0, Bluetooth LE, the loopbacks and so on.

This page lists everything registered on the PC, in two groups: the transports that are part of Windows, and the preview transports installed in Program Files. A summary at the top says whether they all loaded. Each transport has a tag that shows its state:

  • Enabled and loaded: the MIDI service is using it.
  • Enabled but not loaded: it should be running, but it isn’t. The line under its name says why. A transport that is registered but didn’t load is the reason a whole class of device can go missing at once.
  • Disabled but still loaded until restart: you disabled it, but the MIDI service keeps using it until the service restarts.
  • Disabled and not loaded: it’s off.

Every registered transport and whether it loaded

You can also turn transports on and off here. If you only use USB devices, for example, you can disable Bluetooth and the network transports, so the MIDI service stops looking for Bluetooth devices and stops opening network ports. Select Disable or Enable on a transport. Disabling one tells you what you’ll lose and asks you to confirm first.

This needs administrator rights, and the change takes effect when the MIDI service restarts. The page offers to restart it for you. Restarting the service disconnects every application using MIDI, so close them first. The diagnostics transport is built into the service and can’t be disabled.

If something here is not loading, see Why a service plugin may not load correctly. The usual cause for a third-party transport is that it isn’t signed and Developer Mode is off.

MIDI service

The state of the MIDI service itself: whether it’s running, how it’s set to start, the account it runs under, its process id, and the version of the service on disk.

The state of the MIDI service

Restart the MIDI service stops and restarts it. Every application using MIDI loses its connections and has to reconnect, so close or save your work first.

Start with Windows changes the service from starting on demand to starting with Windows. The service normally starts when the first MIDI application asks for it, which adds several seconds to that first application’s startup. If you use MIDI regularly, starting it with Windows is the better choice.

Registry

Windows MIDI Services relies on a small number of registry values, and third-party installers, driver uninstallers and “MIDI port reordering” utilities are known to break them. When they’re wrong, MIDI either stops working entirely or silently falls back to the old stack.

This page shows what’s actually there, in groups you can open and close, with a green, amber or red marker against each value and a plain description of what it’s for. A group with a problem opens by itself. A summary at the top says whether anything needs repair. If anything does, Repair lists exactly what it would change, asks you to confirm, and then makes only those changes. Windows has to be restarted afterwards, because the audio and MIDI services read these values when they start.

The registry values Windows MIDI Services depends on

If the PC is in Legacy MIDI mode, no changes are offered. Legacy mode deliberately does not use the service, so “repairing” the values would undo the mode you chose.

There’s a full description of what belongs here in Required registry entries.

The page also checks the two Windows settings that music apps use to get priority: the Audio and Pro Audio tasks of the Multimedia Class Scheduler Service (MMCSS). Tweak guides and “optimizer” apps sometimes change them, and a bad value can stop some apps from getting any MIDI input. Each task gets a marker: green if Windows can use it and it has the Windows defaults, amber if it works but someone changed it, and red if Windows can’t use it. It also shows the MaxThreads value, which changes how many threads each app can register with MMCSS. Windows doesn’t set it, so it’s amber if someone has. Repair doesn’t change any of these. MIDI apps get no input after Windows tweaks explains how to put them back.

Drivers

Two jobs on this page.

Removing vendor drivers and switching the MIDI class driver

Removing drivers you no longer need

Windows MIDI Services replaced the reasons most people installed a vendor MIDI driver. The KORG USB MIDI driver and the KORG BLE-MIDI driver each have an entry here, showing whether the package is installed and offering to remove it along with any device using it.

Bluetooth LE MIDI is now built into Windows MIDI Services, so the KORG BLE-MIDI driver is no longer needed and can conflict with the in-box support. Bluetooth LE devices are set up in the Windows MIDI Bluetooth Setup app afterwards.

Switching between the MIDI class drivers

Windows has two class drivers a class-compliant USB MIDI device can use: the new combined MIDI 1.0 and MIDI 2.0 driver, and the older USB Audio class driver. Each device is listed with the driver it’s using now and a button for each class driver. The button for the driver the device already uses is turned off and says Using new MIDI driver or Using classic driver, so you can see the current state at a glance. This saves the trip through Device Manager described in How to switch between MIDI class drivers.

Devices that can only be audio are left out of the list, but the list is not a guarantee that everything on it is a MIDI device. Windows offers the MIDI class driver for any USB audio device, and forcing it onto one that can’t use it may stop that device working or make the PC stop responding until it is restarted. Only change the driver for a device you know is a MIDI device.

Close your MIDI applications before changing a driver. Afterwards, unplug the device, restart Windows, and plug it back in; not every device needs this, but many do.

There is a Plug and Play issue in Windows which can revert your choice after an update, so you may have to repeat this occasionally.

App provenance

This app was ported to C++ by AI from the original C# MIDI Settings app coded by Pete Brown. It has been extensively modified using GitHub Copilot since that time. Underlying API originally coded by Pete Brown and modified in the same way.

Didn't find what you were looking for?

Windows MIDI Services is an open source project with all source available on GitHub. We have a great community on Discord as well. Between GitHub and Discord, you should find the information you are looking for.