Getting started
Installation overview
Pick your OS, grab the right installer, and get Universal Controller MIDI running in under two minutes. Three platforms, one workflow.
Updated
Universal Controller MIDI turns a game controller into a class-compliant MIDI device in under 120 seconds, on macOS, Windows, and Linux. The app is a single download, ~38 MB, with no kernel extensions, no driver signing prompts, and no DAW plugin to install.
This page is the index. Pick your OS below, follow the platform guide, then come back to verify everything works.
Pick your OS
One installer per platform. Each one bundles the Python runtime, the UI, and the MIDI bridge — nothing else to fetch.
- macOS — universal DMG, Apple Silicon + Intel. ~12 s to install.
- Windows — signed
.exeinstaller, Windows 10 and 11. - Linux — AppImage or
.deb, X11 + Wayland.
Installer matrix at a glance
If you're picking between formats — especially on Linux — here's the shape of each option side-by-side. All three bundle the same app version.
| Platform | Format | Size | Admin needed | Auto-update |
|---|---|---|---|---|
| macOS 12+ | Universal DMG | ~38 MB | No | Yes (in-app) |
| Windows 10/11 | NSIS .exe | ~42 MB | Optional | Yes (in-app) |
| Debian/Ubuntu | .deb | ~44 MB | Yes (apt) | Via apt repo |
| Any Linux | AppImage | ~48 MB | No | Yes (in-app) |
| Arch/Fedora/Nix | tarball | ~40 MB | No | Manual |
What to expect
After install, the app launches a one-time onboarding wizard that asks for input-device permissions, lights up your first controller, and creates a virtual MIDI port your DAW can listen to. Total walk-through: ~90 seconds.
If you're on macOS or Windows, the DAW side is zero-config — your virtual port shows up under whatever name you set (default: Universal Controller). On Linux, ALSA handles it the same way aplaymidi does.
# macOS — quick check the install dropped the app where expected
ls /Applications | grep -i "Universal Controller"
# Windows — same check via PowerShell
Get-ChildItem "$env:LOCALAPPDATA\Programs\UniversalControllerMIDI"
# Linux — confirm the binary is on PATH after .deb or tarball install
which ucm && ucm --version Then what?
Once the controller is paired and your DAW sees the port, the next stop is first launch + onboarding, then the mapping editor. Most users are playing their first kick drum within five minutes of opening the installer.
What if it doesn't work?
Most install failures fall into one of these buckets. If you're stuck, walk this list before opening a ticket.
- "Installer won't open" on macOS — quarantine bit is set. Drag the app from the DMG window, not from Downloads. Or run
xattr -dr com.apple.quarantine "/Applications/Universal Controller MIDI.app". - SmartScreen blocks the .exe — the cert is signed but new. Click More info → Run anyway. See Windows install for the full unblock flow.
- AppImage won't launch on Wayland — missing
libfuse2. Install withsudo apt install libfuse2t64on Ubuntu 24.04+, or use the.debinstead. - App opens then immediately closes — input-monitoring permission was denied. Re-launch and accept the prompt, or toggle it on under System Settings → Privacy & Security.
- "Disk full" mid-install — the installer expands ~110 MB of Python bytecode during the unpack step even though the final footprint is ~38 MB. Free up at least 150 MB on the install volume and retry.
None of the above? Run the loopback test and grab the diagnostics export from the cog icon. That's everything our support inbox needs.