Universal Controller MIDI

Mapping & customization

Map the touchpad to XY

Use the DualSense touchpad as an XY MIDI pad. One finger drives two CCs simultaneously — filter cutoff on X, resonance on Y.

Updated

The touchpad-as-XY-pad turns the DualSense's glassy strip into a Kaoss-pad-style controller. One finger position spits out two CC streams at once — perfect for filter cutoff × resonance, or pan × delay mix. It's the single most expressive surface on the controller, and it's wasted as a click button.

If you've ever seen a Korg Kaoss Pad demo and wanted that feeling without buying one, this is the binding. Roland's old D-Beam, the Haken Continuum, and every "Kaossilator"-style toy share the same trick: two-dimensional position → two CCs → instant texture.

What you need

A DualSense or DualShock 4 controller (the touchpad is what we're after). Xbox pads don't have one — they get a stick-based XY equivalent instead. If you want the Kaoss two-finger style with independent fingers, see two-finger touchpad mode.

Open the editor and select the touchpad

On the Mapping tab, click the touchpad rectangle in the diagram. The panel splits into x (horizontal) and y (vertical) axes — same UI as the analog sticks, because under the hood they behave the same way.

Bind X and Y to separate CCs

The classic Kaoss combo is filter cutoff on X and resonance on Y. CC 74 is the GM2 standard for cutoff; CC 71 is resonance.

{
  "touchpad": {
    "mode": "xy",
    "x": { "type": "cc", "cc": 74, "channel": 1, "range": [0, 127] },
    "y": { "type": "cc", "cc": 71, "channel": 1, "range": [0, 127], "invert": true },
    "onTouchStart": { "type": "note", "note": 60, "channel": 2, "velocity": 100 },
    "onTouchEnd":   { "type": "note", "note": 60, "channel": 2, "velocity": 0 }
  }
}

Touchpad coordinate reference

Knowing where the corners land helps when you're tuning ranges:

PositionRaw XRaw YCC value (with invert Y)
Top-left00X=0, Y=127
Top-right19190X=127, Y=127
Centre959540X=64, Y=64
Bottom-left01079X=0, Y=0
Bottom-right19191079X=127, Y=0

The DualSense reports 1920×1080 raw resolution (yes, same as 1080p — the chip was repurposed). The bridge divides that down to 0–127 for MIDI.

Sample-and-hold on release

By default, the bridge freezes the last X/Y values when your finger lifts — so the filter doesn't snap back to wherever the touchpad reads as "rest". If you want a snap-back to centre, toggle snapBack: true in the binding.

{
  "touchpad": {
    "mode": "xy",
    "x": { "type": "cc", "cc": 74, "channel": 1 },
    "y": { "type": "cc", "cc": 71, "channel": 1, "invert": true },
    "snapBack": true,
    "snapBackTo": [64, 64],
    "snapBackMs": 200
  }
}

The snapBackMs field controls the ease — 0 for an instant jump, 500 for a slow fall-off. 200 ms feels musical.

Common scenarios

Patches that show off the surface:

  • Kaoss filter: X = CC 74 cutoff, Y = CC 71 resonance, with onTouchStart firing a held note. Lift = silence. Move = sweep. The default starter.
  • Reverb pad: X = CC 91 reverb send, Y = CC 93 chorus send. Drag a sustained pad note around to morph the ambience.
  • Pan + delay mix: X = CC 10 pan, Y = CC 95 (delay send on most plugins). Choreograph a stereo bounce with one finger.
  • Pitch bend + mod: X = pitch-bend (type: "pitch"), Y = CC 1 mod. Closest you'll get to a Theremin without buying one.
  • Macros on a Push-style pad: X = Macro 1, Y = Macro 2 on an Ableton rack. Two finger positions = a whole sound design dimension.

Save and test

Save, drag a finger across the pad, watch the MIDI monitor stream two CCs in lockstep. If only one axis fires, the binding for the other axis is probably set to none — re-check both.

What's next

Want each finger to drive its own pair of CCs? See two-finger touchpad mode. Otherwise, save this as a preset via save and load presets.

Edit this page on GitHub Updated
ESC

Type to search.