A DualSense in a REAPER studio is not a novelty rig. It is sixteen buttons you can hit without looking, two absolute two-axis sticks, two analogue triggers with genuine throw, and a clickable touchpad — for the price of something already in the house. The question is not whether it works, it is which jobs it is actually better at than a mouse, and how to set it up so it keeps working in six months. This is the working setup, in the order you should build it.
- What you do: bridge the DualSense to a virtual MIDI port, set deadzones first, bind transport as global actions and parameters as project learns.
- What you need: REAPER 6 or 7, a DualSense or DualSense Edge, a USB-C data cable, Universal Controller MIDI.
- Time: 20 minutes including calibration.
- Cost: the controller you own. Bridge free to try,
$89for Pro.
Can I use a PS5 DualSense in REAPER?
Yes, once a bridge converts the controller's HID stream into a virtual MIDI port — after that REAPER treats it as an ordinary MIDI controller with no special handling.
There is nothing to configure on REAPER's side that is specific to a gamepad. The device appears in Options → Preferences → Audio → MIDI Devices like a Launch Control or a nanoKONTROL, and every binding mechanism works unchanged. All the gamepad-specific intelligence — parsing Sony's report format, normalising axes, handling the touchpad — lives in Universal Controller MIDI, not in your DAW.
Step 1 — The cable, which is the first thing that goes wrong
Use a USB-C data cable. Charge-only cables power the controller perfectly and carry no data, which produces the most confusing possible symptom: a controller that is clearly alive, with lights on, that no software can see.
Confirm the operating system sees it before you open anything else:
# macOS
ioreg -p IOUSB | grep -i dualsense
# Windows
powershell "Get-PnpDevice | Where-Object FriendlyName -like '*Wireless Controller*'"
# Linux
ls /dev/input/by-id/ | grep -i sony Bluetooth works too and is genuinely convenient for parameter rides and transport. For anything percussive, stay wired — the reasoning is in the Bluetooth MIDI latency guide.
Step 2 — Port online, then REAPER
Start the bridge before REAPER. REAPER enumerates MIDI devices once at startup, and a virtual port created afterwards will not appear until you force a rescan.
- macOS:
Audio MIDI Setup → Window → Show MIDI Studio → IAC Driver → Device is online. - Windows: the bridge installs its own virtual MIDI device. Nothing to configure.
- Linux: ALSA's virtual sequencer is online by default. Verify with
aconnect -l.
Then in REAPER: Options → Preferences → Audio → MIDI Devices, right-click the bridge port, tick Enable input, right-click again, tick Enable input for control messages. Both. Double-click the row and alias it DualSense so it is obvious in the Learn dialog later.
If the port is missing, click Reset all MIDI devices at the bottom of that page.
Step 3 — Deadzones before bindings, not after
This is the step that separates a rig you use from one you abandon. Do it before you bind a single thing.
A DualSense stick at rest does not report exactly zero. On a well-used controller it reports small, wandering values continuously. Bind that to a track volume and REAPER will dutifully write a noise floor into the automation lane for as long as the project is open. The first time you see it you will assume the bridge is broken; it is not, it is a worn potentiometer doing exactly what worn potentiometers do.
In the bridge, open the calibration panel and raise each stick's deadzone until the resting value sits dead still at centre. Run the centring sweep so per-axis offsets are stored and re-applied at launch. The algorithm and why a polygon deadzone beats a radial one is covered in the drift compensation guide.
Triggers need the opposite treatment: a small deadzone at the bottom so a resting finger does not send a value, and ideally full travel to 127 slightly before the physical stop, so you can reliably reach maximum without forcing the trigger.
Which DualSense controls suit which REAPER jobs?
Match the gesture to the control. Buttons for discrete fires, triggers for continuous rides, sticks for two-axis, touchpad for morphs.
- Transport + navigation
- Arm, mute, click, undo
- Continuous ride
- Continuous ride
- Volume + pan
- Two-axis morph
| Input | Best REAPER job | Binding type | Why it suits |
|---|---|---|---|
| D-pad | Transport and navigation actions | Action (global) | Four directions you can find blind; actions work in every project |
| Face buttons | Record arm, mute, metronome, undo | Action (global) | Discrete, unambiguous, no value needed |
| L2 / R2 triggers | Filter cutoff, send levels, dynamic EQ threshold | FX learn, Absolute + soft takeover | Real analogue throw with pressure control |
| Left stick | Selected-track volume and pan | Track learn with track-selected scoping | Two axes that map naturally to the two track basics |
| Right stick | Focused-FX parameters 1 and 2 | FX learn with focused scoping | Follows whichever plugin window you are in |
| Touchpad X/Y | Two-axis plugin morph — EQ freq + gain, reverb size + mix | FX learn | Absolute XY surface, Kaoss-style sweeps |
| L1 / R1 | Layer modifiers — held, never bound in REAPER | Bridge-side only | Doubles everything else without a mapping mode |
The touchpad is the genuinely unusual one. Nothing on a typical MIDI controller at this price gives you an absolute two-axis surface, and dropping an EQ's frequency and gain onto it turns corrective EQ into a gesture. The touchpad XY guide covers the mapping in detail.
Step 4 — Bind in two passes
Pass one is global and permanent, pass two is per-project. Keeping them separate is what stops you re-mapping every session.
Pass one — actions, bound once, forever
Actions → Show action list. For each of these: select the action, click Add… under Shortcuts, press the control.
- D-pad up / down → Track: Go to previous track / Track: Go to next track
- D-pad left / right → Markers: Go to previous marker / Markers: Go to next marker
- Cross → Transport: Play/stop
- Circle → Transport: Record
- Square → Options: Toggle metronome
- Triangle → Track: Toggle record arm
These land in reaper-kb.ini and are present in every project you open from now on. Back that file up — Options → Show REAPER resource path in explorer/finder — because it is your entire global layer in one file.
Pass two — parameters, inside a template
Right-click a track volume fader → MIDI/OSC Learn → move the left stick Y → set Absolute, tick Soft takeover, tick Enable only when track is selected. That one binding plus the d-pad track navigation is a complete mixing surface from three controls.
Then the triggers onto whatever you ride most, and the touchpad onto an EQ. When the layout stops changing, File → Project Templates → Save Project as Template.
Download Universal Controller MIDI to get the port and the calibration panel. The free tier holds three saved presets — a tracking map, a mixing map and an editing map is a genuinely complete studio setup. Pro is $89 one-time for the full mapping editor, conditional layers, unlimited presets and OSC output.
What about the adaptive triggers and haptics?
REAPER has no concept of adaptive triggers. Any feedback has to be driven by sending something back out to the bridge, which then drives the controller.
That is a real possibility rather than a theoretical one — REAPER can send MIDI out of a track, and a JSFX can emit messages on its output port. Route that to a feedback port the bridge listens on and you can, for example, have transport state change what the triggers feel like. The mechanism is covered in writing a REAPER JSFX that processes gamepad MIDI. Just be clear that this is you building a feedback loop, not REAPER supporting the DualSense.
Common problems, in the order they occur
- Nothing at all. Charge-only cable. Swap it before changing any settings.
- Bridge sees it, REAPER does not. Bridge started after REAPER. Hit Reset all MIDI devices.
- Notes play, Learn captures nothing. Control messages not enabled on the port.
- Automation lane full of noise. Deadzone too low. Go back to step 3.
- Parameter jumps when you touch a trigger. Soft takeover off.
- Bindings vanished in a new project. They were FX or track learns. Save a project template.
- Everything broke after you edited the controller preset. REAPER bindings store CC numbers. Freeze the preset once bound, and make a new preset instead of editing the one your bindings depend on.
FAQ
Can I use a PS5 DualSense in REAPER?
Yes, once bridge software converts the controller's HID output into a virtual MIDI port. REAPER then treats the DualSense exactly like any other MIDI controller and you bind it with MIDI/OSC Learn.
Does the DualSense need a cable or does Bluetooth work?
Both work. USB-C is the more reliable choice for anything percussive or for long sessions; Bluetooth is convenient and fine for parameter rides and transport.
Which DualSense controls are most useful in a REAPER studio?
The analogue triggers for continuous rides, the d-pad for transport and navigation actions, the sticks for selected-track volume and pan, and the touchpad as a two-axis plugin morph.
Why does my DualSense stick move a parameter when I am not touching it?
That is stick drift — the sensor reports small non-zero values at rest. Raise the deadzone in the bridge calibration panel until a resting stick sends nothing.
Do the adaptive triggers do anything in REAPER?
REAPER itself has no concept of adaptive triggers. Feedback has to be driven by sending MIDI or OSC back to the bridge, which then drives the controller's haptics.
Will my DualSense bindings survive into a new REAPER project?
Action bindings will, because they are global. FX and track bindings are stored in the project, so save a project template once the layout is settled.
Wrap-up
Data cable, port online before REAPER, deadzones before bindings, actions global and parameters templated. Build it in that order and a DualSense stops being a curiosity and becomes the thing you reach for when you want to ride a send without hunting for the mouse.
Download Universal Controller MIDI and set it up tonight with hardware you already own.