Universal Controller MIDI
Blog Reaper 8 min read

Reaper + Gamepad — MIDI Learn, ReaScript, and OSC Bridging

Wire a PS5 DualSense or Xbox controller into Reaper. MIDI Learn for any FX parameter, ReaScript for transport, and an optional OSC bridge for power users.

By Aidxn Design

Reaper does not care what your controller is. Right-click anything, hit Learn, wiggle a stick — done. That's the whole pitch. This guide walks through the cleanest Reaper gamepad MIDI controller setup, plus the parts most tutorials skip: ReaScript for transport, optional OSC bridging for power users, and how to make the bindings survive across sessions on different machines.

TL;DR
  • What you do: bridge the gamepad to virtual MIDI, enable the port in Reaper preferences, MIDI-learn anything.
  • What you need: Reaper 7.0+, macOS 12+ / Windows 10+ / Linux, a DualSense or Xbox controller, Universal Controller MIDI v1.0+.
  • Time: 6–8 minutes from cold install to a stick on a ReaEQ band.
  • Cost: the controller you already own. Bridge free to try, $49 Pro.

Why use a gamepad in Reaper

Reaper's Actions list is the most flexible binding system in any DAW. Every action can be triggered by MIDI, mouse, keyboard, or OSC, and you can chain them with ReaScript (Lua, Python, or EEL2). A DualSense bridged in via virtual MIDI becomes a sixteen-button macro keyboard, a four-knob continuous controller, an XY pad, and a transport surface — all of which Reaper sees as one device.

The other thing Reaper does better than every other DAW: per-project MIDI Learn. Your gamepad bindings save into the .rpp project file, so opening a different song does not stomp on the current mapping. Power users add ReaScripts on top for behaviour Learn cannot express — Shift layers, momentary toggles, OSC translation.

What you'll need

  • Universal Controller MIDI v1.0+ (download)
  • Reaper 7.0+
  • macOS 12+, Windows 10+, or Linux (Reaper Linux build works fine, see the Ardour post for Linux specifics)
  • A PS5 DualSense, DualSense Edge, or Xbox Series controller
  • USB-C data cable

Step-by-step setup

1. Install and plug in

Install the bridge, plug the controller in, confirm the green status pill. Reaper does not need to be running yet.

2. Enable virtual MIDI

macOS: Audio MIDI Setup → IAC Driver → Device is online. Windows: skip. Linux: the bridge uses ALSA's virtual sequencer, which is online by default.

3. Load the Reaper preset

Bridge UI: Presets → Reaper (default). This binds the controller to a sensible default: sticks on CC 7/10/14/15, triggers on CC 1/11, touchpad on CC 16/17, face buttons on notes 60–63, d-pad on transport.

4. Enable the input port in Reaper

Reaper: Preferences → Audio → MIDI Devices. Find Universal Controller MIDI in the input list. Right-click → Enable input and Enable input for control messages. Both ticks matter — the first lets MIDI notes through to the track, the second lets CCs reach the MIDI Learn engine.

5. MIDI-learn any parameter

Right-click any FX parameter, fader, send level, plugin knob. Pick Learn. Reaper opens a dialog listening for incoming MIDI. Move the gamepad input you want to bind, hit OK. The assignment lives in the project. Repeat for every control you want.

Liking the speed? Get Pro for $49 — one-time, owned forever. Pro unlocks unlimited bridge presets, a Reaper Shift layer, the OSC translation mode, and adaptive trigger output for transport states.

Mapping ideas that ship

  • Sticks on ReaEQ bands. Left stick X/Y on band 1 frequency / gain, right stick X/Y on band 2 frequency / gain. Mixing EQ becomes a thumb game.
  • Triggers on ReaComp threshold and ratio. Two-handed compression sculpting in real time.
  • Face buttons on toolbar action MIDI notes. Bind Item: Split items at edit cursor, Item: Duplicate items, Item: Glue items, Item: Render selection.
  • D-pad as transport. Bind d-pad notes to Transport: Play, Transport: Stop, Transport: Record, Transport: Toggle repeat.
  • Touchpad XY on track send volumes. Two-finger Kaoss-style send sweeps without leaving the keyboard.

ReaScript snippet — d-pad transport with Shift layer

-- UCMIDI_DPad_Transport.lua
-- Bind via Actions list → Add → ReaScript, then assign MIDI notes 78–81
local note = ({reaper.get_action_context()})[2]
if note == "78" then reaper.Main_OnCommand(1007, 0) -- Play
elseif note == "79" then reaper.Main_OnCommand(1013, 0) -- Record
elseif note == "80" then reaper.Main_OnCommand(40044, 0) -- Toggle repeat
elseif note == "81" then reaper.Main_OnCommand(1016, 0) -- Stop
end

Optional — OSC bridging for power users

Reaper's OSC engine is faster than its MIDI Learn engine for high-resolution parameters (14-bit precision, no 7-bit cap). The bridge's Pro mode can re-emit incoming gamepad events as OSC messages on localhost:8000, which Reaper picks up via Preferences → Audio → MIDI/OSC Devices → Add OSC. Use this for fader-style sweeps where 128 steps of 7-bit MIDI feels stair-stepped.

Gotchas

  • Learn binds the wrong CC. If you have multiple MIDI inputs active, disable everything except UCMIDI before learning. Reaper takes the first MIDI event it sees.
  • Bindings disappear on project load. Reaper stores MIDI Learn per project. Save as a template via File → Project Templates → Save Project as Template.
  • Stick centre is not zero on absolute CCs. Switch the binding to 14-bit mode in the Learn dialog, or use the bridge's bipolar option for sticks.
  • Reaper does not see UCMIDI on Linux. Run aconnect -l to confirm ALSA sees the port, then start Reaper and re-scan in MIDI Devices.

Wrap-up

Reaper plus a gamepad is the cheapest production-ready DAW + tactile-controller combo on the planet, and the bridge ties them together in under ten minutes. The Reaper user guide has a dedicated MIDI Learn chapter worth bookmarking once you start chaining ReaScripts.

Download Universal Controller MIDI and Reaper has a new control surface for the price of nothing.

Keep reading

More setup walkthroughs