REAPER has no device database. There is no "supported controllers" page, no vendor profile to download, no installer that drops a script into a folder. That sounds like a gap until you realise it is the design: REAPER treats every REAPER MIDI controller as a stream of messages and lets you bind any message to anything. This guide takes you from a cold install to a working controller layout, whether that controller is a $600 fader bank, a $60 mini keyboard, or a gamepad already on your desk.
- What you do: enable the device in Preferences, name it, then bind with MIDI Learn — or add a control surface if your hardware has motorised faders.
- What you need: REAPER 6 or 7, any class-compliant controller, or a gamepad plus Universal Controller MIDI.
- Time: 10 minutes to a layout you will keep using.
- Cost: nothing on REAPER's side. The bridge is free to try,
$89for Pro.
What MIDI controller works best with REAPER?
The one with the physical controls you reach for most, because REAPER will bind any of them to anything — the question is ergonomics, not compatibility.
That answer is less of a dodge than it sounds. In a DAW with device profiles, buying the "wrong" controller means half the buttons do nothing. REAPER has no such failure mode. A 25-key controller with eight knobs, a Launchpad-style grid, a single expression pedal and a gamepad are all equally bindable. So pick for the gesture you want:
- Continuous rides (volume automation, filter sweeps, dynamic EQ) want something with throw — faders, or an analogue trigger you can modulate with finger pressure.
- Discrete fires (transport, markers, item actions) want buttons you can hit without looking.
- Two-axis gestures (send/return morphs, EQ freq-and-gain together) want an XY surface — a touchpad or a thumbstick.
- Banked mixing across 24 tracks is the one case where a dedicated surface with displays and motorised faders genuinely wins.
A gamepad covers the first three well and the fourth badly, which is a fair trade when the hardware is already in the room. Sixteen buttons, two absolute two-axis sticks, two analogue triggers and (on a DualSense) a touchpad is a lot of bindable surface.
Step 1 — Get the device into REAPER's list
Connect the controller before launching REAPER. REAPER enumerates MIDI devices at startup; a port that appears afterwards will not show up until you force a rescan.
Then: Options → Preferences → Audio → MIDI Devices. Your controller appears in the upper MIDI inputs table. If it does not:
- Click Reset all MIDI devices at the bottom of the page.
- On macOS, confirm the device exists in
Audio MIDI Setup → Window → Show MIDI Studio. - On Windows, confirm it appears in Device Manager under Sound, video and game controllers.
- On Linux, run
aconnect -land confirm ALSA lists the port.
If the port does not exist at the OS level, REAPER is not your problem. For gamepads this is the expected state — a DualSense is an HID device, not a MIDI device, so there is nothing for REAPER to find until a bridge publishes one. Universal Controller MIDI does that conversion and creates the virtual port; what a virtual MIDI port actually is, and why it behaves differently on each OS, is covered in the virtual MIDI port deep dive.
Step 2 — Enable input, and enable control messages
Right-click the device row. Tick Enable input. Right-click again. Tick Enable input for control messages.
These two ticks do different jobs and you want both:
| Setting | What it allows | Symptom if missing |
|---|---|---|
| Enable input | MIDI reaches record-armed tracks and instruments | Keys press, nothing sounds |
| Enable input for control messages | MIDI reaches the Learn engine, actions and control surfaces | Notes sound, but MIDI Learn captures nothing |
After both ticks, the device's Mode column should mention control. This single step resolves most "REAPER ignores my controller" threads.
Step 3 — Name the device
Double-click the device row and set an alias. Call it Gamepad, Fader Bank, Keys — anything that will still mean something in eight months.
REAPER shows this alias in the MIDI/OSC Learn dialog and in the control-surface device dropdowns. When you are running two or three controllers, an aliased list is the difference between a five-second binding and a guessing game. It also survives the device being re-enumerated with a different port number, which is common on Windows.
MIDI Learn or a control surface — which should I use?
Use MIDI Learn unless your hardware has motorised faders, scribble strips or LED rings that need feedback from REAPER.
REAPER offers both, under different menus:
- MIDI Learn — right-click any control. No configuration, no device support required, one-way. Bindings go where you put them.
- Control surfaces —
Options → Preferences → Control/OSC/web, then Add. REAPER ships Mackie Control (MCU), HUI, Frontier Tranzport, and generic OSC. These are bidirectional: REAPER sends state back, so faders move and displays update.
A gamepad has no displays and no motors, so a control surface buys you nothing on the output side — but OSC is still interesting for a different reason: it carries 32-bit floats instead of 7-bit integers, and it can bind directly to actions. That path is covered in the REAPER OSC setup guide. For an honest comparison of all four approaches, see control surface options compared.
Step 4 — The three bindings worth making first
Resist the urge to map everything. Make these three, use them for a week, then expand.
1. Transport, as a global action binding
Actions → Show action list. Find Transport: Play/stop. Click Add… under Shortcuts and press a button on the controller. Repeat for Transport: Record and Transport: Toggle repeat. These are global — they live in reaper-kb.ini and work in every project forever.
2. Selected-track volume, with scoping
Right-click a track's volume fader → MIDI/OSC Learn. Move a fader or a stick axis. Before hitting OK, tick Enable only when track is selected and set CC mode to Absolute. Now that control rides whichever track has focus.
3. One FX parameter, with soft takeover
Open a plugin, right-click the parameter you ride most, choose Learn, move an analogue trigger. Tick Soft takeover so recalling the project does not snap the value to wherever your finger happens to be.
Then File → Project Templates → Save Project as Template. Three bindings, saved once, and every new session starts wired up.
No controller on the desk but a gamepad in the drawer? Download Universal Controller MIDI — it publishes the virtual port REAPER needs, and the free tier holds three saved presets, which is enough for a tracking, mixing and editing layout. Pro is $89 one-time for the full mapping editor, unlimited presets and OSC output.
Can I run two or more controllers at once?
Yes. REAPER handles multiple devices cleanly because bindings record which device the message came from. Two controllers can both send CC 7 on channel 1 and REAPER will keep them apart.
A practical split for a hybrid rig:
- Keyboard controller — notes and the mod wheel, enabled for input, control messages optional.
- Gamepad — transport actions and continuous rides, enabled for both.
- Expression pedal via MIDI interface — one absolute CC, enabled for control messages only.
If you are running two gamepads, the bridge enumerates them as separate virtual ports, so REAPER sees two distinct devices and the usual per-device binding rules apply. The two-controller setup guide covers the port naming and channel separation.
What are the common setup failures, and what do they mean?
- Device missing from the list. Port created after REAPER launched. Hit Reset all MIDI devices.
- Learn captures nothing. Control messages not enabled.
- Learn captures the wrong control. Another device is sending idle traffic — a drifting stick, a pedal at rest, an LFO-driven surface. Disable other inputs while learning.
- Everything doubles up. The same physical device exposed twice (for example a USB port and a separate "MIDIIN2" port on multi-port hardware). Disable the duplicate.
- Works until you reboot. Windows re-enumerating USB MIDI with a different friendly name. Set an alias, and if it keeps moving, plug into the same physical port every time.
- Values are jittery on automation lanes. That is physical, not software — noisy pots or a worn stick. Add a deadzone and smoothing at the source, or filter with a JSFX MIDI processor before the parameter sees it.
FAQ
What MIDI controller works best with REAPER?
Any class-compliant MIDI controller works with REAPER without a driver, because REAPER binds by MIDI Learn rather than by device profile. Controllers with motorised faders benefit from a Mackie Control or HUI surface; everything else is better served by plain MIDI Learn.
Do I need a driver to use a MIDI controller in REAPER?
No. Class-compliant USB MIDI controllers are recognised by the operating system and appear directly in REAPER's MIDI Devices list. Only proprietary control surfaces need vendor software.
Can I use a game controller as a MIDI controller in REAPER?
Yes, with a bridge. A gamepad speaks HID, not MIDI, so software such as Universal Controller MIDI converts the HID stream into a virtual MIDI port that REAPER sees as a normal controller.
Why does my MIDI controller only play notes and not control anything?
The device is enabled for input but not for control messages. Right-click the device in Preferences → Audio → MIDI Devices and tick Enable input for control messages.
How many MIDI controllers can REAPER use at once?
As many as the operating system exposes. Each device is enabled independently in the MIDI Devices list, and bindings record which device they came from, so two controllers can send the same CC without clashing.
Does REAPER remember my controller setup between projects?
Device enablement is global and persists. Parameter bindings are per-project, so save a project template once your layout is settled.
Wrap-up
REAPER's lack of a device database is a feature. Two ticks in Preferences, an alias, and a right-click is the entire setup path for any controller on earth. The REAPER user guide covers the control-surface side in depth if you later add a motorised desk.
Download Universal Controller MIDI and the controller you already own becomes the one REAPER is waiting for.