Universal Controller MIDI

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 Sequoiaarm64 / x86_64RecommendedLocal network prompt on first launch.
14 Sonomaarm64 / x86_64RecommendedFull feature parity.
13 Venturaarm64 / x86_64SupportedNo adaptive trigger haptics over Bluetooth.
12 Montereyarm64 / x86_64SupportedMinimum supported. CoreMIDI 1.0 only.
11 Big Surx86_64Best effortNo 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 -dr command 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 --add to 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.

Edit this page on GitHub Updated
ESC

Type to search.