Blog Haptics 9 min read

Bidirectional MIDI — Haptic Rumble and Adaptive Trigger Feedback

MIDI is normally one-way, gamepad to DAW. Reverse it. Send MIDI back to the controller and feel the kick on the rumble motors, feel the bass on the adaptive triggers.

By Aidxn Design

Everybody knows MIDI as the wire from controller to DAW. The cable points one way. Spoiler: it doesn't have to. The DualSense and DualSense Edge have two rumble motors plus two adaptive-trigger force-feedback actuators capable of programmable resistance curves at 1 kHz. The Xbox Series controllers have four motors. Send MIDI in the other direction and you can play those actuators like instruments. Behold a gamepad that vibrates in time with your kick drum.

TL;DR
  • Actuators on a DualSense: two low/high-frequency rumble motors, two adaptive-trigger force motors, plus a haptic voice-coil on each grip.
  • How MIDI drives them: CCs map to continuous parameters (motor strength, trigger resistance), notes map to discrete pulses.
  • Update rate: 1 kHz on USB, ~125 Hz over Bluetooth.
  • Use cases: feel the kick, feel a hi-hat tick, feel a sidechain pump, feel a synth pluck on the trigger.

What "bidirectional MIDI" means

Most MIDI controllers are output-only — they send Note-On and CC messages, and that's it. A few support input (Push 3, Launchpad Pro) so the host can light pads, draw the session view, and animate the clip grid. The bridge takes the same idea further: any MIDI message arriving at the bridge's input port can drive an actuator on the gamepad. Rumble motors, trigger resistance, voice-coil haptics — all addressable from your DAW.

What the gamepads can actually do

ActuatorDualSenseXbox Series XSwitch Pro
Low-frequency rumbleYes (~50 Hz)Yes (~40 Hz)Yes
High-frequency rumbleYes (~250 Hz)Yes (~200 Hz)Yes
Trigger force resistanceL2 + R2, 0–8 NImpulse triggers (rumble only)None
Voice-coil hapticsYes (HD rumble)NoHD Rumble
Update rate (USB)1 kHz500 Hz1 kHz
Update rate (Bluetooth)~125 Hz~125 Hz~125 Hz

How Universal Controller MIDI maps it

The bridge exposes a separate MIDI input port called UCMIDI Feedback. Send to that port from your DAW and the bridge translates the messages into HID output reports for the gamepad. The mapping is configurable; defaults look like this:

{`{
  "feedback": {
    "port": "UCMIDI Feedback",
    "lanes": [
      { "input": "cc:80",  "actuator": "rumble.low",   "scale": [0, 1.0] },
      { "input": "cc:81",  "actuator": "rumble.high",  "scale": [0, 1.0] },
      { "input": "cc:82",  "actuator": "trigger.l2",   "profile": "resistance-curve-1" },
      { "input": "cc:83",  "actuator": "trigger.r2",   "profile": "resistance-curve-1" },
      { "input": "note:100","actuator": "haptic.tick", "durationMs": 12 },
      { "input": "note:101","actuator": "haptic.buzz", "durationMs": 80 }
    ]
  }
}`}

Adaptive triggers — the killer feature

The PS5 trigger system is genuinely novel. Each L2/R2 trigger has a motor that resists pull travel along a programmable force curve. You can set a "wall" at 40% travel, a soft spring through the first 30%, a vibration band in the middle, anything you want. The Sony HID protocol exposes seven trigger modes plus a custom "Effect Function 8" that takes nine parameters. The bridge wraps these into profiles you can address by name.

{`# Adaptive trigger force profiles (bridge naming)
linear         # consistent resistance through pull
detent         # one click at 50% travel
double-detent  # two clicks at 33% and 66%
weapon         # gun-trigger style: pre-tension then break
spring         # rising resistance proportional to travel
vibration      # buzzing during pull, frequency configurable
custom         # JSON: array of {position, force} pairs

# Custom curve example
{
  "name": "kick-drum-trigger",
  "type": "custom",
  "curve": [
    { "position": 0.0,  "force": 0.0 },
    { "position": 0.3,  "force": 0.2 },
    { "position": 0.7,  "force": 0.95 },
    { "position": 1.0,  "force": 0.0 }
  ]
}`}
Get Universal Controller MIDI Pro — $89 →

Real use case — feel the kick

In Ableton, drop a Utility on the kick drum bus. Use a Max for Live envelope-follower to convert the kick's amplitude into MIDI CC 80, sent to the UCMIDI Feedback port. Each kick fires a short rumble pulse on the gamepad's low-frequency motor. Latency from kick audio to gamepad vibration is ~6 ms — well under the threshold of perception. You're physically feeling the beat through your palms.

# Ableton Max for Live patch (conceptual)
[live.dial @range 0. 127.]
       |
[scale 0 1 0 127]
       |
[makenote 80]   <- CC number
       |
[midiout UCMIDI_Feedback]

Real use case — adaptive trigger as a synth envelope

Map R2 to send CC for filter cutoff (gamepad → DAW), and map the DAW's filter resonance value back to R2 trigger resistance (DAW → gamepad). Higher resonance = stiffer trigger. You feel the resonance physically as you sweep. This is the closest thing to a "haptic envelope" on a $109 controller — and it's the feature that makes most producers buy Pro after the trial.

Use case — sidechain pump as haptic pulse

Run a sidechain from your kick onto a Utility unit on the bass. Convert the gain reduction envelope to MIDI CC 81, send to the bridge. Now the high-frequency motor pulses in time with the sidechain — you feel the pump while listening to it. Subtle, but addictive once you've felt it.

Limitations and gotchas

  • Bluetooth haptics are noticeably worse. Update rate drops from 1 kHz to ~125 Hz. Fast pulses turn into smudges. Use USB.
  • Adaptive triggers are PS5-only. Xbox impulse triggers are rumble-only. Switch Pro has no trigger force.
  • Rumble drains battery. Continuous rumble at 100% halves DualSense battery life from ~12 h to ~6 h. Tune to taste.
  • Triggers heat up. Sustained high-force trigger profiles for longer than ~5 minutes warm noticeably. The bridge throttles automatically above 60°C internal temperature.
  • HID rate limits exist. The DualSense accepts up to ~250 unique effect changes per second. Beyond that, commands queue.
  • Roadmap: voice-coil haptic samples (load a WAV, play it through the controller speaker) in v1.5.

Bidirectional MIDI turns the gamepad from an input device into a complete tactile feedback surface. Grab Universal Controller MIDI, route a kick to the rumble port, and feel the difference on the first downbeat.

Keep reading

More setup walkthroughs