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.
You hear a click, a pop or a short gap in your audio, and your audio app’s meters say it wasn’t busy. Sometimes the cause isn’t the audio app at all. It’s a driver somewhere else on the PC, such as the Wi-Fi, graphics or storage driver, that kept a processor busy for too long at exactly the wrong moment.
This article explains what’s going on, in plain words, and shows you how the DPC latency check in Windows MIDI Troubleshooting and Repair finds the driver responsible and what to do about it.
The DPC latency check isn’t a benchmark, and its numbers aren’t a score for your PC. Use it when you already hear clicks, pops or dropouts at a buffer size that should be big enough for your project. A big project, with lots of tracks and plug-ins, needs a bigger buffer than a small one, and that’s normal.
Long DPCs are common, and most of them never touch your audio. Windows spreads its work across all of the PC’s processors, and a long DPC often runs on a processor your audio isn’t using at that moment. That’s why the check only counts something against your PC when it actually held up audio or MIDI, and never just because a number was high.
If your audio sounds fine, there’s nothing to fix. Don’t chase the numbers. Go make music.
When a device needs attention, such as a network adapter with new data, it interrupts a processor. Windows answers the interrupt right away, and the driver usually asks for a bit more work to run as soon as possible. That bit of work is a DPC, short for deferred procedure call.
Interrupts and DPCs run ahead of every app. While one runs, nothing else can use that processor, not even the audio app that’s waiting to make the next bit of sound. Most of them finish in a few microseconds (millionths of a second), and you’d never notice. One that takes a millisecond or more can cause a glitch, but only if audio needs that same processor at that moment.
DPC latency is the general name for the delay this causes. It’s not a Windows MIDI Services setting, and nothing you set in your audio app changes it.
Audio apps make sound in small chunks called buffers. The buffer size setting in your audio app decides how big each chunk is. At 128 samples and 48 kHz, each buffer holds 2.7 ms (milliseconds) of sound, and the app has to fill the next one before the current one finishes playing.
If a driver holds up the audio app’s thread for longer than that, the buffer isn’t ready in time. You hear a click, a pop or a short gap. That’s why a bigger buffer size often hides the problem: it gives the app more time. The cost is that everything you play sounds a little later, which is what you’re trying to avoid when you play live.
MIDI can be held up the same way. A held-up MIDI message arrives late, so notes can sound uneven.
Run it when you hear glitches, not to see how your PC scores.
The check doesn’t change anything on your PC. It doesn’t install a driver, change your power settings or change how often Windows’ timer ticks, and it stops recording when it’s done, or when you close the app. It runs on both x64 and Arm64 PCs.
The colored bar at the top gives you the answer in one line. It comes only from what the check saw being held up: your audio app, the MIDI service, or the test thread standing in for audio. A long DPC on its own doesn’t change it.
Under it, the check tells you how often audio, or the test thread standing in for it, was held up for a millisecond or more, and how long the longest wait was. When audio was held up, it also tells you which buffer sizes can drop out when that happens, so you know what to choose in your audio app until you fix the cause.
Each card is a driver that actually held up audio, MIDI or the test thread, worst first. It says:
Some drivers in Windows, such as the driver framework, the network stack and the storage stack, run other drivers’ code. The check looks inside them and names the driver that actually used the time, such as your Wi-Fi or USB controller driver, rather than the Windows part it ran inside.
Not every hold-up comes from a DPC. Some code holds a processor so tightly that nothing else runs there, not even its timers. The check catches that through the test thread: when the test thread’s timer goes off late and no DPC or interrupt explains it, the check names the code that processor was running instead. Sometimes that’s Windows itself.
This short list shows drivers that kept a processor busy for half a millisecond or more, but didn’t hold up audio, MIDI or the test thread for a millisecond or more. That’s common, and usually harmless: they ran on a processor that audio wasn’t using at that moment. They’re only worth a look if you still hear glitches after you’ve tried everything else.
The advice depends on the kind of driver:
| Kind of driver | What to try |
|---|---|
| Wi-Fi | Get the newest driver from the company that made it. Turn off Wi-Fi, or use a network cable, while you play or record. |
| Network adapter or Windows networking | Pause big downloads, cloud sync and streaming while you play or record. |
| Bluetooth | Turn off Bluetooth while you play or record, if you don’t need it. |
| Graphics | Get the newest graphics driver. Close games, videos and other apps that draw a lot while you make music. |
| Storage | Avoid copying big files, backups and virus scans while you record. |
| USB controller | Plug your audio interface straight into the PC instead of into a hub, or try another USB port. The newest chipset drivers from your PC’s maker can help too. |
| Virtual machines | Close virtual machines, Windows Subsystem for Linux (WSL), Docker and Windows Sandbox while you make music. |
| Power management | Choose Best performance for the power mode in Settings, and plug in a laptop. |
| Security software | Don’t turn it off. Make sure it’s up to date. |
Never turn off security features, such as Microsoft Defender, Memory Integrity or virtualization-based security, to make audio work better. The check never suggests it, and neither do we.
Once in a while, a processor stops answering and nothing Windows records shows why. When the test thread runs into that, the check tells you. It can come from the PC’s firmware, or from virtual machines. Look for a firmware (BIOS or UEFI) update from your PC’s maker, and close virtual machines while you make music.
The notes at the bottom say what limited the check. For example, when no audio app was playing, the answer comes from the test thread alone, and it’s worth checking again while your audio app plays.
View technical report opens the full results in the app’s report viewer. It’s the same kind of report as mididiag’s, so Save report and Copy report give you a text file you can attach to a support request or send to the company that made a driver. It includes:
The report includes the names of the programs and drivers that were running on your PC. Read it before you post it anywhere public.
Save a trace file for Windows Performance Analyzer saves everything the check recorded as an .etl file. Choose where to save it before the check starts. It can be a gigabyte or more for a long check. Open it in Windows Performance Analyzer to see every DPC, interrupt and context switch, or attach it to a report for a driver’s maker.
Open a trace file reads a trace saved earlier, by this check or by Windows Performance Recorder, without administrator rights. A trace from Windows Performance Recorder needs CPU usage with context switches, DPCs and interrupts, such as the one wpr -start CPU records. Driver companies and versions are shown only when the trace came from this PC and its drivers haven’t changed since.
From a command prompt, miditroubleshooter --latency-trace <file.etl> opens the page and reads that trace straight away, without asking for administrator rights.
How the check works: