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.
- 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:
$0beyond the controller and the$89bridge 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
$200for 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.
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 Setup → Window → Show 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:
| Input | Note (channel 16) | Suggested QLab use |
|---|---|---|
| Cross | Note 60 | Primary GO |
| Circle | Note 61 | STOP / Panic |
| Square | Note 62 | Previous cue |
| Triangle | Note 63 | Skip to next cue |
| D-pad up / down | Note 64 / 65 | Cue list nav up / down |
| D-pad left / right | Note 66 / 67 | Jump to previous / next cue list |
| L1 / R1 | Note 68 / 69 | Shift layer (hold) |
| L2 / R2 (digital) | Note 70 / 71 | Fade out current / fade in next |
| Options / Share | Note 72 / 73 | House lights / standby announce |
| Touchpad click | Note 74 | Blackout |
| PS button | Note 75 | Reset 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 type | Best MIDI trigger | Why |
|---|---|---|
| Memo / Group / GO | Note On (ch.16) | Single-shot, no value needed |
| Fade cue | Note On + CC value | Velocity scales fade target |
| MIDI cue (outbound) | Trigger via Note On | Don't loopback its own port |
| Script cue | Note On + Lua handler | Lua reads incoming MIDI |
| Devamp / Goto | CC 64 (toggle) | Held-state cues match CC semantics |
| Network / OSC cue | Note On bridges to OSC | QLab can re-emit on receipt |
| Wait / Arm | Program Change | PC 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 msfor the network hop. Total still under10 ms. - Ethernet is way more reliable than Bluetooth in venues full of 2.4 GHz radios.
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 Offon 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 → Calibrationin 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.
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.