How to Debug MIDI Devices on Mac
Last updated: March 2026
This guide explains how to debug MIDI devices on Mac and diagnose common MIDI problems on macOS. If your MIDI controller is not working, sending wrong channels, or producing stuck notes, you need a way to inspect the raw MIDI messages your device sends. Midilize is a MIDI debugging and monitoring tool for macOS that shows you every byte in real time — so you can find the problem fast and know exactly what to fix.
Common MIDI problems
These are the most frequent MIDI issues that require debugging:
- No MIDI signal — your device is connected but nothing happens in your DAW
- Wrong MIDI channel — your controller sends on channel 1 but your app expects channel 10
- Stuck notes — Note On messages without matching Note Off, causing notes to sustain indefinitely
- Wrong CC numbers — knobs and faders sending unexpected control change numbers
- Duplicate messages — one key press generates multiple Note On events
- Velocity issues — notes always at maximum or minimum velocity regardless of touch
- SysEx errors — firmware updates or patch transfers failing silently
- MIDI clock problems — external devices not syncing correctly to your DAW
How to inspect MIDI messages
The key to debugging MIDI is seeing the raw data. Every MIDI message is a sequence of bytes: a status byte (which encodes the message type and channel) followed by one or two data bytes. For example:
90 3C 64— Note On, channel 1, note C4 (60), velocity 100B0 07 7F— Control Change, channel 1, CC 7 (volume), value 12780 3C 00— Note Off, channel 1, note C4, velocity 0E0 00 40— Pitch Bend, channel 1, centered position
A MIDI monitor shows you these messages decoded into human-readable form as they arrive — note names, CC labels, channel numbers, and precise timestamps.
Using monitoring tools on macOS
macOS does not include a built-in MIDI message monitor. Audio MIDI Setup shows connected devices but does not display message data. For actual debugging, you need a dedicated tool.
Options include terminal-based tools (limited readability), Xcode's MIDI testing utilities (require a large developer download), or a visual application like Midilize. Midilize provides both a Monitor Mode for inspecting raw messages and a Flow Mode for testing signal routing — no developer account or terminal experience needed.
Debugging workflow with Midilize
Here is a systematic debugging workflow that works for virtually every MIDI problem:
Connect and identify
Plug in your MIDI device. Open Midilize and check the Sources panel to verify the device appears. If it does not appear, the issue is at the connection or driver level — see our guide on MIDI interfaces not detected on Mac.
Monitor raw output
Enable the device in Sources and switch to Monitor Mode. Press keys, turn knobs, move faders. Watch what messages appear in the table. This immediately reveals wrong channels, unexpected CCs, duplicate messages, or missing messages.
Filter to isolate
Use the filter panel to show only the message type you are investigating. Show only Note On/Off to check for stuck notes. Show only CC messages to verify knob assignments. Hiding irrelevant messages makes patterns much easier to spot.
Inspect byte-level detail
Click any message in the table to open the Message Inspector. It shows the exact hex bytes, decoded values (note name, CC number, velocity), and timestamp. This is essential for diagnosing SysEx content or unexpected message formats.
Test with routing
Switch to Flow Mode to build a test route. Add your device as input, add processing nodes (channel filter, transpose, set channel, etc.), and connect to a MIDI Out. Verify that transformed messages behave correctly before routing to your DAW.
Screenshot: Midilize message inspector showing byte-level MIDI detail
Diagnosing specific problems
Stuck notes in detail: Filter the monitor to Note On and Note Off. For every Note On (velocity > 0), there should be a corresponding Note Off (or a Note On with velocity 0) on the same note number and channel. If a Note On has no match, the note will sustain. Causes include: a MIDI cable unplugged mid-session (the Note Off never arrived), a controller firmware bug, or a filter node in the signal chain blocking Note Off messages.
To fix stuck notes immediately, use Midilize's Panic tool, which sends All Notes Off (CC 123) on all channels. To prevent recurrence, ensure Note Off messages are not being filtered out anywhere in your signal chain.
Wrong CC numbers: If a knob or fader sends an unexpected CC number, the controller is likely in the wrong preset or mode. The monitor shows the exact CC number for every message. Compare the received CC to your expected mapping and update the controller's mapping or your DAW's assignment to match.
Velocity stuck at maximum or minimum: If velocity is always 127, the controller may have velocity sensitivity disabled in its settings, or the MIDI channel's velocity curve is set to maximum. Check the controller's global settings. In Midilize, you can add a Velocity Modifier node to apply a velocity curve and restore natural dynamic response.
Hardware vs software: how to tell
Midilize acts as a neutral diagnostic layer between your hardware and your software. Use this to pinpoint whether a problem is hardware-level or software-level:
If messages appear correctly in Midilize Monitor — the hardware, cable, and macOS driver are working correctly. The problem is in your DAW's MIDI configuration, plugin settings, or routing.
If messages are missing, wrong, or erratic in Midilize Monitor — the problem is upstream of the software: the device itself, the MIDI cable, the USB connection, or the driver. Try a different cable, different USB port, and restart the device.
Signs of hardware problems: messages appearing without any key presses, notes triggering only after multiple attempts, signal only working when the cable is held at an angle. These indicate physical fault.
Signs of driver or OS problems: device disappears from Audio MIDI Setup after a macOS update, or messages appear but with incorrect data compared to what the device should be sending according to its documentation.
Debugging tips
- Stuck notes: Every Note On must have a matching Note Off. If not, add a Panic send or use Midilize's Panic tool.
- Wrong channel: The channel is encoded in the lower 4 bits of the status byte.
90= Note On channel 1,91= Note On channel 2, up to9F= channel 16. Add a Set Channel node to force the correct channel. - Timing/latency: Midilize timestamps messages with microsecond precision. Compare timestamps between consecutive messages to identify jitter or unexpected delays in the signal chain.
- SysEx integrity: SysEx messages start with
F0and end withF7. If the inspector shows an incomplete SysEx (noF7), the device dropped bytes mid-transmission. Check cable quality and USB connection. - USB power: Some controllers behave erratically on unpowered USB hubs. Connect directly to your Mac or use a powered hub.
When the device is not detected
If your MIDI device does not appear in Midilize's Sources panel:
- Check the USB or Bluetooth connection
- Try a different USB cable (some cables carry charge only, not data)
- Try a different USB port, or connect directly to the Mac without a hub
- Open Audio MIDI Setup and check if macOS sees the device in MIDI Studio
- In MIDI Studio, use the rescan option to refresh the device list
- Check the manufacturer's website for macOS drivers if the device requires them
- Restart your Mac with the device connected
For a complete troubleshooting checklist, see our dedicated guide: MIDI interface not detected on Mac.
Testing with a known-good reference
One of the most effective debugging strategies is to introduce a known-good reference at each point in the signal chain. If you are not sure whether a problem is in your controller, your cable, your MIDI interface, or your DAW, test each component in isolation:
- Test the controller alone: Connect the controller directly to your Mac and open Midilize. Enable the device in Sources and watch Monitor Mode. Press every key, turn every knob, move every fader. If messages appear for every control in the correct range, the controller and its USB connection are working correctly. If some controls are missing or showing wrong values, the fault is in the controller itself.
- Test a different cable or port: If the controller does not appear in Sources, swap the USB cable and try a different port. Use a cable you have confirmed works for data transfer on another device. Connect directly to a USB port on your Mac rather than through a hub.
- Test in a minimal DAW session: Open a new, empty session in your DAW with a single software instrument track. If MIDI works there but not in your main session, the problem is in the main session's configuration — a specific track setting, a MIDI FX plugin, or a routing loop.
- Test on a different Mac: If you have access to another machine, connecting your controller and testing it immediately reveals whether the fault is device-specific or Mac-specific (driver, permissions, USB hardware).
MIDI problems after a macOS update
macOS updates occasionally break MIDI functionality, most commonly for devices that rely on proprietary drivers. The symptoms vary: the device may disappear from Audio MIDI Setup, messages may arrive but with incorrect data, or the device may appear but produce no output at all.
When this happens after an update, the first step is to check the device manufacturer's website for a driver update that supports the new macOS version. Most major manufacturers release updated drivers within days or weeks of a macOS release. If no driver is available, check whether your device has a class-compliant mode — many devices that normally use proprietary drivers also support the USB MIDI class specification as a fallback, which does not require a driver and works on any macOS version.
Class-compliant operation can usually be enabled through the device's menu or by holding a specific button combination at startup — refer to your device's documentation. Once in class-compliant mode, the device should appear in Audio MIDI Setup and in Midilize without any driver installed.
Frequently asked questions
How do I fix stuck MIDI notes on Mac?
Stuck notes occur when a Note On arrives without a matching Note Off. To fix immediately, send an All Notes Off command (CC 123, value 0) to all channels — Midilize's Panic button does this automatically. To find the root cause, filter the monitor to Note On and Note Off only and look for unmatched Note On messages in the sequence.
Why is my MIDI controller sending on the wrong channel?
Most MIDI controllers default to channel 1 but can be configured to use any channel. Check your controller's global MIDI channel setting in its menu. As a quick fix, add a Set Channel node in Midilize to force all messages to the correct channel regardless of what the controller sends.
My MIDI device is connected but nothing happens in my DAW. What should I check?
Open Midilize and enable your device in Sources. Switch to Monitor Mode and press keys — if messages appear, the device is sending MIDI and the problem is in your DAW's MIDI configuration (wrong input port, wrong channel, track not armed). If no messages appear in Midilize, check the cable, try a different USB port, and verify the device is recognized in Audio MIDI Setup.
How do I tell if a MIDI problem is hardware or software?
Use Midilize as a neutral diagnostic layer. If messages appear correctly in Monitor Mode, the hardware and macOS driver are working fine — the problem is in your DAW or plugin configuration. If messages are missing, wrong, or erratic in the Monitor, suspect the hardware, cable, or driver.