Getting started
Install on macOS
Install Universal Controller MIDI on macOS via DMG. Apple Silicon and Intel, with the Gatekeeper unblock step for an unsigned first launch.
Updated
The macOS build of Universal Controller MIDI installs in 12 seconds flat — one universal DMG, Apple Silicon and Intel in the same file. Drag, drop, launch. The only extra step is a Gatekeeper unblock the first time you open it.
Download and mount the DMG
Grab the latest build from store.aidxn.com. The file is named UniversalControllerMIDI-vX.Y.Z.dmg and weighs ~38 MB. Double-click it to mount.
Drag the app icon onto the Applications shortcut in the mounted window. That's the install. Eject the DMG when you're done.
# Confirm the app landed in /Applications
ls /Applications | grep "Universal Controller"
# Confirm the architecture matches your Mac
file "/Applications/Universal Controller MIDI.app/Contents/MacOS/ucm"
# expect: Mach-O universal binary with 2 architectures: arm64, x86_64 macOS support matrix
The build is notarised against Xcode 15 and links against the macOS 12 SDK. Older Macs still work but with caveats.
| macOS version | Arch | Status | Notes |
|---|---|---|---|
| 15 Sequoia | arm64 / x86_64 | Recommended | Local network prompt on first launch. |
| 14 Sonoma | arm64 / x86_64 | Recommended | Full feature parity. |
| 13 Ventura | arm64 / x86_64 | Supported | No adaptive trigger haptics over Bluetooth. |
| 12 Monterey | arm64 / x86_64 | Supported | Minimum supported. CoreMIDI 1.0 only. |
| 11 Big Sur | x86_64 | Best effort | No notarisation stapling — expect the Gatekeeper prompt every launch. |
First-launch Gatekeeper unblock
The build is notarised but you may still see a "developer cannot be verified" prompt on macOS 14+ if the quarantine bit is set. Don't click "Move to Bin". Cancel out, then right-click the app and pick Open — that whitelists it forever.
If you want to bulk-clear the quarantine attribute from the terminal:
xattr -dr com.apple.quarantine "/Applications/Universal Controller MIDI.app"
# Verify the attribute is gone
xattr -l "/Applications/Universal Controller MIDI.app"
# expect: empty output Grant Input Monitoring permission
On first launch, the app asks for Input Monitoring so it can read controller events. Approve it. If you miss the prompt, head to System Settings → Privacy & Security → Input Monitoring and toggle the app on manually.
Bluetooth controllers also need Bluetooth permission. Same pane, two scrolls down. macOS 15 also added a per-app Local Network prompt — accept that one if you ever plan to use the network MIDI feature.
If you want to inspect the TCC database to see exactly which entitlements the OS has stored for the app:
# Read your user-level TCC entries for the app's bundle id
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db \
"SELECT service, allowed FROM access WHERE client='com.aidxn.universalcontrollermidi';" What if it doesn't work?
Five failure modes cover ~95% of macOS install issues. Walk these before opening a ticket.
- "App is damaged and can't be opened" — the quarantine attribute is malformed. Run the
xattr -drcommand above, then right-click → Open. - App opens but the status chip says "No controller" — Input Monitoring was denied. Open System Settings → Privacy & Security → Input Monitoring, toggle the app off and back on, then re-launch.
- Bluetooth controller pairs but no input arrives — Bluetooth permission missing. Same pane as above, scroll down to Bluetooth, enable for the app.
- App crashes immediately on M1/M2/M3 — Rosetta-only third-party MIDI shim conflict. Quit any AU host running in Rosetta, then re-launch.
- "App can't be verified" loop on every launch — Big Sur or older. Notarisation stapling needs macOS 12+. Upgrade or use
spctl --addto whitelist the bundle manually.
What's next
Up next: first launch + onboarding, then enable the IAC virtual MIDI port so your DAW can hear the bridge.