Blog QLab 10 min read

QLab Gamepad MIDI Show Control — DualSense Cue Rig

QLab gamepad MIDI show control with a DualSense — fire QLab 5 cues, build a stage manager remote, wire fail-safes. Tested rig for opening night.

By Aidxn Design

A QLab gamepad MIDI show control rig turns a PS5 DualSense into the smallest cue desk in the building — wireless, ruggedised, charged off any USB-C plug front of house. QLab 5 (and QLab 4 Pro) treats it like any external MIDI surface: virtual port in, MIDI triggers on each cue, GO mapped to a face button. This is the working rig — wired or wireless, with fail-safes, latency budgets, and the pre-show checks that keep opening night clean.

TL;DR
  • What you do: bridge the DualSense to a virtual MIDI port, point QLab at that port, build MIDI triggers on each cue.
  • What you need: macOS show machine, QLab 5+, DualSense, USB-C cable, IAC virtual port, optional MIDI-over-Ethernet for long runs.
  • Time: 15 minutes for a 20-cue show, plus rehearsal.
  • Cost: $0 beyond the controller and the $89 bridge Pro licence if you want haptic confirmation.

What you'll learn

  • How to wire a DualSense as a 20-cue MIDI remote for QLab 5 in under 15 minutes.
  • Which QLab cue types map to which MIDI messages — and why channel 16 keeps your traffic clean.
  • Three fail-safes that actually save shows (dual GO, spacebar fallback, All Notes Off on disconnect).
  • How to extend the rig over rtpMIDI for a stage manager 30 feet from the show machine.
  • When to graduate from MIDI to OSC — and why 30 cues is the inflection point.

A $70 controller beats a $600 cue box for the 5–40 cue range

Dedicated cue-trigger boxes (X-keys, Stream Deck XL, Cuelander) run $200–600, live on a single venue's surface, and go dark when you change theatres. A DualSense is wireless out of the box, has rumble for tactile cue confirmation, charges off any USB-C plug, and survives drops better than a laptop. 16 inputs + d-pad + touchpad gives you 20 distinct cue triggers without modifiers — double that with shoulder shift layers.

Where it does not belong: 200-cue shows

Got 200 cues? Hire a real cue console. The DualSense shines in the 5–40 cue range — small theatre, immersive shows, school productions, gallery openings, panel events, podcast rooms, AV demos. Above 40 cues the cognitive load of remembering which face button is cue 27 outpaces the convenience.

Hardware and software list

  • Show Mac running macOS 13+ and QLab 5 (or QLab 4 Pro if you are still on it).
  • DualSense controller. The DualSense Edge is worth the extra $200 for theatre work — remappable back paddles let you put GO on the back so the front buttons never accidentally fire.
  • USB-C cable for wired use, or Bluetooth (with the caveats below).
  • Universal Controller MIDI on the show Mac — grab it here.
  • Optional: BomeBox or rtpMIDI on the stage manager side for wireless over Ethernet rather than Bluetooth.
Cue 1 — Houselights down Cue 2 — Pre-show music fade Cue 3 — Act 1 video start Cue 4 — Lighting state Q12 Cue 5 — SFX thunder roll
QLab cue list step-through — each R1 press advances the active cue.

QLab gamepad MIDI show control — step-by-step setup

1. Install and connect — wired only

Install the bridge. Plug the DualSense in via USB-C. Bluetooth is fine for tech rehearsals, never for the run. Confirm the status pill shows the controller is connected.

2. Create an IAC virtual MIDI port

Open Audio MIDI SetupWindowShow MIDI Studio. Double-click IAC Driver, tick Device is online, add a port called QLab Cues. That's the bus the bridge writes to and QLab listens on. The virtual MIDI port explainer covers how IAC and loopMIDI actually work.

3. Load the QLab preset

In the bridge UI: Presets → QLab Show Control. This preset uses MIDI Note On on channel 16 — picked because nothing musical lives there — and assigns every button + d-pad to a unique note number. The default mapping:

InputNote (channel 16)Suggested QLab use
CrossNote 60Primary GO
CircleNote 61STOP / Panic
SquareNote 62Previous cue
TriangleNote 63Skip to next cue
D-pad up / downNote 64 / 65Cue list nav up / down
D-pad left / rightNote 66 / 67Jump to previous / next cue list
L1 / R1Note 68 / 69Shift layer (hold)
L2 / R2 (digital)Note 70 / 71Fade out current / fade in next
Options / ShareNote 72 / 73House lights / standby announce
Touchpad clickNote 74Blackout
PS buttonNote 75Reset workspace

QLab cue type → MIDI message cheat sheet

Each QLab cue type has a default MIDI message shape that triggers cleanly. Match the bridge's output to the cue type and you'll never fight a misfire.

QLab cue typeBest MIDI triggerWhy
Memo / Group / GONote On (ch.16)Single-shot, no value needed
Fade cueNote On + CC valueVelocity scales fade target
MIDI cue (outbound)Trigger via Note OnDon't loopback its own port
Script cueNote On + Lua handlerLua reads incoming MIDI
Devamp / GotoCC 64 (toggle)Held-state cues match CC semantics
Network / OSC cueNote On bridges to OSCQLab can re-emit on receipt
Wait / ArmProgram ChangePC numbers map to cue numbers cleanly
-- Place in a Script Cue armed at the top of the act.
-- Listens to channel 16 Note On and routes by note number.
local note_to_cue = {
  [60] = function() workspace():goCue() end,
  [61] = function() workspace():panicCue() end,
  [62] = function() workspace():previousCue() end,
  [63] = function() workspace():nextCue() end,
  [74] = function() workspace():cue("Q-BLACKOUT"):start() end,
}

function midi(message)
  if message:type() == "noteOn" and message:channel() == 16 then
    local fn = note_to_cue[message:noteNumber()]
    if fn then fn() end
  end
end

4. Tell QLab to listen — both layers

Open QLab. In QLab → Settings → MIDI, find QLab Cues and tick Listen for incoming MIDI. Then in Workspace Settings → MIDI, set the same port as the workspace input. The separation matters — global listen on, workspace ignoring, is a real configuration and it bites every show op once. Full reference: the Figure 53 QLab 5 MIDI manual.

5. Attach a MIDI trigger to a cue

Select the first cue. Inspector → Triggers → tick MIDI. Click Capture, press Cross. The note number lands in the field. Save. Cue is now bound to Cross. Repeat for STOP on Circle, Previous on Square. Faster move: set the trigger on one GO cue, then Cmd+Shift+V with Triggers ticked to paste to every other GO cue.

6. Fake a shift layer with script cues

QLab has no native modifier system. Fake one: L1 and R1 fire dummy group cues that set a flag via a single-line script cue. Every "shifted" cue's trigger logic checks the flag. Most ops don't need this — 16 dedicated buttons handles a 12-cue show.

7. The 90-second pre-show drill

Press every button before house opens. The drill takes 90 seconds and catches the one cable you wiggled during fit-up.

Latency: 4–6 ms wired. The audience can't hear that

Wired DualSense → bridge → IAC → QLab → first audio sample = 4–6 ms. Inaudible to anyone in the room. Bluetooth adds a P95 spike of 20 ms — still inaudible for cue playback, but you feel the lag in your thumb. Always wire for shows. Universal Controller MIDI's Show Mode toggle locks Bluetooth out and only accepts wired connections. Flick it on for the run.

Wireless without Bluetooth — the long-throw SM remote

Stage manager is in the wings, 30 feet from the show machine. USB-C cables don't reach. Bluetooth is too unreliable. The fix:

  • Run the bridge on a small Mac mini or Pi at the SM position with the DualSense wired in.
  • Use rtpMIDI (Mac) or BomeBox to ship the MIDI over Ethernet to the show machine.
  • Latency adds 2–4 ms for the network hop. Total still under 10 ms.
  • Ethernet is way more reliable than Bluetooth in venues full of 2.4 GHz radios.
GO Cross STOP Circle PANIC Options
GO / STOP / PANIC fail-safe pattern — three buttons every cue list needs.

Fail-safes that have saved actual shows

  • Dual GO buttons. Map Cross AND Square to the same primary GO. If a face button gets stuck, the other still fires the cue.
  • Disable Bluetooth in System Settings during the run. Prevents another tech's MagicMouse from accidentally taking the BT pairing.
  • Set the bridge to send All Notes Off on disconnect. If the controller dies mid-show, no stuck notes will retrigger cues when reconnected. The DualSense disconnect fix covers the deeper recovery setup.
  • Always have a wired backup. A USB number pad or a laptop with the spacebar acts as failover. QLab GO is bound to spacebar by default — never remove that binding.
  • Calibrate sticks before every run. A drifting stick can fire a digital trigger if you've crossed it onto a button-mapped input. Open Settings → Calibration in the bridge and run the centring sweep.
  • Use channel 16. Most musical MIDI gear uses channels 1–10. Channel 16 keeps cue traffic isolated if you also have a band on stage.
R1 Lighting cue Q12 Audio fade cue Video stinger
Multiple-cue MIDI fanout — one R1 press fires lighting, audio, and video together.

Adaptive trigger as cue confirmation — feel the show running

Pro tier: QLab sends MIDI back to the bridge when a cue starts. Set up a MIDI cue that fires CC 1 = 64 on the QLab Cues port whenever a critical cue starts. Route that CC to the bridge's haptic input. L2 thumps once when the cue is live. Stage manager feels the show running without watching the laptop. Same mechanism as the adaptive triggers feedback post, applied to show control instead of music production.

When to consider OSC — 30 cues is the inflection point

QLab speaks both MIDI and OSC fluently. OSC gives you string-named cue addressing (/cue/12/start instead of note 72), far more readable in larger shows. The bridge can emit OSC instead of MIDI — see the OSC vs MIDI comparison for when to switch. Under 30 cues: MIDI. Above: OSC.

Driving lights from the same controller

Running QLab for sound and a separate lighting console for fixtures? The gamepad drives both via the bridge's multi-output mode — face buttons to QLab on channel 16, d-pad to the lighting bridge on channel 5. Full topology in the DMX gamepad bridge post.

Workflow tips from real productions

  • Label the buttons with gaff tape. Three days into tech, you will not remember which trigger is the door slam.
  • Number the cues, not the buttons. In the QLab cue list, set the cue number to match the button (e.g. cue 1 = Cross). It reads cleaner during a panic.
  • Build a calibration cue. A workspace cue that fires every cue at -30 dB so you can hear them queue without playback. Run it at fit-up.
  • Don't store the controller on a Pelican latch. The PS button gets pressed by accident in transit and the battery dies.

FAQ

Does QLab 5 accept MIDI from a DualSense out of the box?

No — QLab 5 reads Core MIDI, not HID gamepad events. You need a bridge layer (Universal Controller MIDI on the show Mac) that translates DualSense input to MIDI on an IAC virtual port. QLab listens to that port and fires cues from the resulting Note On messages.

Can I trigger QLab cues over Bluetooth from a wireless gamepad?

Technically yes, practically no. Bluetooth controllers add a P95 latency spike around 20 ms and occasionally drop the link mid-show. For tech rehearsals it's fine; for the actual run, wire the controller over USB-C or run a remote bridge over rtpMIDI / BomeBox.

How many QLab cues can a DualSense address?

16 face/d-pad/shoulder inputs plus touchpad click plus PS button gives you 18 dedicated cues, and a shift layer (L1 or R1 held) doubles that. The sweet spot is 5–40 cues — above 40, a Stream Deck XL or proper console reads cleaner under pressure.

What is the safest QLab gamepad MIDI show control fail-safe?

Keep the QLab GO spacebar binding live, map two face buttons to the same primary GO note, and disable Bluetooth in System Settings for the duration of the run. Three independent paths to fire the same cue means no single failure stops the show.

The verdict: a working theatre rig running off a controller most stage managers already own. Grab the bridge, set up QLab, run the pre-show drill, and your DualSense is the smallest show desk in the building.

Keep reading

More setup walkthroughs