Universal Controller MIDI
Blog Ardour 8 min read

Ardour on Linux + Gamepad — Open-Source MIDI Controller Workflow

Wire a PS5 DualSense or Xbox controller into Ardour on Linux. ALSA + JACK routing, Generic MIDI surface, ctrl-middle-click binding — a full FOSS controller workflow.

By Aidxn Design

Ardour is the only serious open-source DAW, and it runs better on Linux than half its commercial competitors run on macOS. Pair it with a DualSense bridged through ALSA / JACK and you have a fully FOSS tactile production workflow — no kernel modules, no JoyToKey hacks, no Wine. This guide walks the cleanest Ardour Linux gamepad MIDI controller setup, including the JACK routing most tutorials skip.

TL;DR
  • What you do: install the Linux bridge, plug in the gamepad, patch UCMIDI Out → Ardour MIDI input via JACK or ALSA, enable Generic MIDI in Ardour, ctrl-middle-click to bind.
  • What you need: Ardour 7.5+, a recent Linux distro (Ubuntu 22.04+, Fedora 39+, Arch), JACK or PipeWire, a DualSense or Xbox controller, Universal Controller MIDI v1.0+.
  • Time: 10–12 minutes if you have JACK already running. Add 5 minutes if you are switching from PulseAudio to PipeWire.
  • Cost: the controller you already own. Bridge free to try, $49 for Pro.

Why use a gamepad in Ardour

Ardour's Generic MIDI control surface is one of the cleanest mapping systems in any DAW — every fader, plugin knob, send level, and transport command is bindable to any incoming MIDI message via ctrl-middle-click. Wire a DualSense in, ctrl-middle-click a track fader, move the stick, done. The mapping persists with the session.

Linux's audio stack is the other reason this is a great workflow. JACK or PipeWire route MIDI between apps at sub-1 ms latency. The bridge exposes itself as both an ALSA sequencer client and a JACK MIDI port, so you can patch it into any combination of Ardour, Hydrogen, Carla, Bitwig (yes, Bitwig has a native Linux build), and Helm without leaving the audio session.

What you'll need

  • Universal Controller MIDI Linux build (download) — AppImage for distro-agnostic install, or deb/rpm packages
  • Ardour 7.5+ (8.0+ recommended for the updated Generic MIDI UI)
  • JACK 1.9.20+ or PipeWire 0.3.60+ with the pipewire-jack shim
  • A PS5 DualSense, DualSense Edge, or Xbox Series controller
  • qjackctl or Carla for patch-bay management (optional but recommended)

Step-by-step setup

1. Install the Linux bridge

AppImage: download, chmod +x, run. Deb: sudo apt install ./universal-controller-midi_1.0_amd64.deb. Rpm: sudo dnf install ./universal-controller-midi-1.0-1.x86_64.rpm. The package adds a udev rule so non-root users can read the gamepad HID device.

2. Confirm ALSA / JACK sees the bridge

# List ALSA sequencer clients
aconnect -l

# Expected output includes:
# client 128: 'Universal Controller MIDI' [type=user,pid=12345]
#   0 'UCMIDI Out      '

# JACK port list (if running under JACK or PipeWire-JACK)
jack_lsp | grep -i ucmidi
# UCMIDI:out

3. Patch UCMIDI Out into Ardour

Open qjackctl, click Connect → MIDI. On the left (readable clients) find UCMIDI. On the right (writable clients) find ardour:MIDI in. Click both, then Connect. From the terminal you can also do aconnect "Universal Controller MIDI:0" "ardour:0".

4. Load the Ardour preset

Bridge UI: Presets → Ardour (default). Sticks send CC 7/10 and CC 12/13, triggers send CC 1 and 11, face buttons map to transport notes 60–63, d-pad to track navigation, touchpad to CC 16/17.

5. Enable Generic MIDI in Ardour

Ardour: Preferences → Control Surfaces → Generic MIDI. Tick Enable. Click Show Protocol Settings. Set Incoming MIDI on to UCMIDI:out. Bank size 8 if you want HUI-style banking across an 8-fader window.

6. Bind anything with ctrl-middle-click

Move the mouse over any track fader, plugin knob, or send level. Hold Ctrl and click the middle mouse button. A "Operate Controller now" dialog appears. Move the gamepad input you want to bind. Ardour captures the CC and channel into the session.

Liking the FOSS workflow? Get Pro for $49 — one-time, owned forever. Pro unlocks unlimited bridge presets, an Ardour-specific Shift layer, OSC translation for high-resolution faders, and adaptive trigger output keyed to Ardour transport states.

Mapping ideas that ship

  • Left stick = focused track volume / pan. Single-thumb mix moves while the right hand drives the timeline ruler.
  • Right stick = send 1 / send 2. Reverb and delay rides during a take.
  • Triggers = focused plugin's two macros. Filter cutoff and resonance on most synths.
  • Face buttons = transport. Cross = play, circle = stop, square = record, triangle = loop toggle.
  • D-pad = marker nav. Bind to Ardour's Jump to Previous Marker / Jump to Next Marker.

JACK patchbay snippet

# Save a JACK patchbay rule so connections persist across sessions
# ~/.config/jack/patchbay.xml — fragment
<cable>
  <output client="Universal Controller MIDI" port="UCMIDI Out"/>
  <input  client="ardour" port="MIDI in"/>
</cable>

Gotchas

  • Permissions error reading the gamepad HID device. The udev rule installed by the deb/rpm covers it. AppImage users: copy 99-ucmidi-gamepad.rules from the AppImage resources to /etc/udev/rules.d/ and run sudo udevadm control --reload.
  • PipeWire-JACK shim does not show the bridge. Confirm pw-jack qjackctl shows the port. If not, the bridge is talking ALSA-only — use a2jmidid -e to bridge ALSA → JACK.
  • Ardour does not respond to MIDI Learn. Confirm Generic MIDI is enabled in Preferences and the MIDI port is set to UCMIDI in both the surface and the session MIDI tab.
  • Bluetooth pairing is flaky. Linux's BlueZ stack is rough with gamepad HID. Wire the controller for any session you cannot afford to drop.

Wrap-up

Ardour plus a DualSense plus JACK is a fully FOSS production rig that competes feature-for-feature with most $200-a-year commercial offerings. The bridge ties them together in ten minutes with one udev rule and a qjackctl patch. The Ardour Generic MIDI manual is required reading once you start scripting custom XML mappings.

Download Universal Controller MIDI and your Linux studio has a tactile surface for the price of nothing.

Keep reading

More setup walkthroughs