Guides
Control stage lights with a game controller
You can run DMX stage lights from an Xbox or PlayStation controller on a Mac, with no extra bridge app. InputConfig turns the controller into a MIDI device, and the Mac lighting apps people actually use, QLC+, Lightkey and MagicQ, already listen to MIDI. Squeeze a trigger and the lights fade up. Tap a button and a scene comes on.
This one started with a question on Reddit: someone wanted to run a lighting rig from an Xbox controller, and when I sat down to answer it I realized it already works. This guide is the whole chain, from the controller in your hands to the lights on the stand, in about half an hour. The first time a squeeze on a trigger fades up a real light, it is hard to put the controller down.
InputConfig is free on the Mac App Store. macOS 14 or later, no account, no tracking, open source.
On this page: 12 sections
Steps
- Connect your controller and open InputConfig.
- Download the Lighting Desk preset from this page and double-click it to add it to InputConfig, then turn it on.
- Open your lighting app (QLC+, Lightkey, or MagicQ) and pick InputConfig as a MIDI input.
- Connect a USB-DMX interface or an Art-Net or sACN node, and patch your fixtures to it in the lighting app.
- Learn each control: in QLC+ use Auto Detect on a Virtual Console slider or button, in Lightkey right-click a cue or fader and add a trigger, then move the matching control on the controller.
- Set scene buttons to toggle and the two bumpers to flash, and keep a blackout and a stop all button within easy reach.
Gather what you need
- A controller. Xbox, PlayStation, Switch Pro, 8BitDo, whatever InputConfig can see. If it shows up in the app, it works here. Since InputConfig 1.6, flight sticks, wheels and pedals read every axis at full resolution, so a throttle lever or a pedal can be a fader too.
- InputConfig. Free on the Mac App Store.
- A lighting app. QLC+ is free, open source, and runs natively on Apple silicon. Lightkey is Mac only and friendly. MagicQ from ChamSys works too, but its MIDI input is not in every edition, so check ChamSys's docs first.
- Something that talks to the lights. A USB-DMX interface (the Enttec DMX USB Pro uses the driver already built into macOS) or an Art-Net or sACN node on your network.
No lights yet? QLC+ shows every fixture on screen, so you can build and test the whole thing before you plug anything in. InputConfig and QLC+ are both free; the only thing you might need to buy is the interface or node.
Know how the pieces talk
InputConfig creates a MIDI port on your Mac named InputConfig. Every other app sees it exactly like a MIDI controller plugged in with a cable. It never leaves your Mac, so there is no network setup and no driver to install. Two kinds of messages do all the work:
- MIDI CC (Control Change)
- A trigger or a stick sends a smooth value from 0 to 127 as you move it. A trigger rests at 0, which is perfect for a dimmer: let go and the fader is all the way down.
- MIDI notes
- A button sends a note on while you hold it and a note off when you let go. The lighting app decides whether that means toggle a scene or flash it only while held.
Triggers are faders, buttons are scenes, and the lighting app decides what each one means.
Set up the controller in InputConfig
The quickest start is the Lighting Desk preset on this page. Everything goes out on MIDI channel 1:
| Control | Sends | Good for |
|---|---|---|
| Right trigger | CC 1 | Master dimmer |
| Left trigger | CC 2 | Strobe speed, haze, or a color |
| Right stick up | CC 3 | A third fader |
| A, B, X, Y | Notes 36 to 39 | Scenes 1 to 4 |
| LB, RB | Notes 40, 41 | Flash hits |
| D-pad | Notes 42 to 45 | Next cue, previous cue, chases |
| Start | Note 46 | Blackout |
| Back | Note 47 | Stop all |
- You: Open the downloaded file to add it to InputConfig, and turn it on.
- InputConfig: Sends those CCs and notes on the InputConfig port. A stick sending CC reaches the full 0 to 127 once it is past its deadzone, so the right stick fader goes all the way up.
- Check: On a PlayStation pad, give the preset a light bar color: select it in the sidebar and click the light bar strip above the controller drawing in the Live Visualizer. One look at the controller then tells you the lighting layout is running.
To build your own instead, add a row, press Scan, move the control, then pick MIDI CC or MIDI Note as the output. The MIDI CC tool helps you see which numbers you have already used.
Connect it in QLC+
Step 1: Pick the input and output
- You: Open the Inputs/Outputs tab. On universe 1, tick InputConfig as the MIDI input, and pick your DMX interface or Art-Net as the output.
- QLC+: Listens to the InputConfig port on that universe.
- Check: Move a trigger and the universe's input indicator reacts.
Step 2: Learn the faders and scenes
- You: In the Virtual Console, add a slider for your dimmer. In its properties, turn on Auto Detect under the external input, then squeeze the right trigger. Add buttons for your scenes the same way: attach the scene, turn on Auto Detect, press A.
- QLC+: Binds each widget to the control you moved, and doubles the 0 to 127 MIDI range up to DMX's 0 to 255, so a full squeeze really is full.
- Check: The slider follows the trigger, and A brings up the scene.
Step 3: Set how the buttons behave
- You: Set scene buttons to Toggle Function on/off and the LB and RB buttons to Flash Function. Point Start at Toggle Blackout and Back at Stop All Functions.
- QLC+: Toggles scenes, and lights the flash scenes only while you hold a bumper.
- Check: Let go of a bumper and its flash goes dark.
Connect it in Lightkey
- You: Open the External Control window, click MIDI, and pick InputConfig from the Input menu. Then right-click a cue or a fader, choose add trigger, and press the button or move the trigger you want to use.
- Lightkey: Learns the control right there.
- Check: The cue fires from the controller. Setting up a whole show takes a couple of minutes.
Move heads with buttons, not the stick
You can put pan and tilt on a stick, and for big sweeps it is a lot of fun. The limit: a MIDI CC only has 128 steps, so slow, precise moves can look a little steppy. For shows, save your positions in the lighting app, put them on buttons, and let the app's own effects handle the movement.
Keep a panic button
Lights are live, so plan for the moment something goes wrong. Climb this ladder, smallest step first:
- Blackout. Start, away from the buttons you will be mashing.
- Stop all. Back, which is View on an Xbox pad and Create on a DualSense.
- Stop InputConfig. Back is also half of InputConfig's own emergency stop out of the box: a normal press sends Stop All to the lighting app, and holding it with Start for three seconds stops InputConfig itself, which sends note off for every note it holds and stops all output.
If you would rather keep the two apart, move the emergency stop to another button in Settings, General. For an actual show, use a cable instead of Bluetooth and charge the controller beforehand. Bluetooth is fine for rehearsals; a cable is one less thing to worry about.
Other ways to do it
I am a little biased here, so here are the other routes too:
- Chataigne. Free, reads a game controller directly and sends DMX, Art-Net, or OSC. Great if lights are the only thing you need, and the bridge to use if you ever need one. OSCulator, often recommended for this, shut down at the end of 2024.
- QLC+'s own HID plugin. Reads controllers, but its docs list it for Windows and Linux.
- InputConfig. Makes more sense when the same controller also needs to run keys, the mouse, or music on your Mac, or when you want one setup that works in every app.
A MIDI keyboard or fader box can run at the same time; the lighting app sees it and InputConfig as separate inputs. For OSC instead of MIDI, see game controller to OSC on a Mac.
The short version
- Add the Lighting Desk preset. Triggers are faders, buttons are scenes, on MIDI channel 1.
- Pick InputConfig as the MIDI input. In QLC+, Lightkey or MagicQ, then learn each control.
- Toggle scenes, flash the bumpers. Blackout and stop all on Start and Back.
- Use a cable for shows. And charge the controller first.
Any lighting app that learns MIDI can be played from a controller.
Download
- Lighting Desk presetTriggers as dimmer faders (CC 1 and CC 2), face buttons as scenes (notes 36 to 39), bumpers as flash, D-pad for cues, Start for blackout, Back for stop all. MIDI channel 1. 7 KB
To add a downloaded preset: drop the file on InputConfig's Dock icon, or click the … button next to any preset in the sidebar, choose Import Preset File, and pick the file. It lands in the sidebar, ready to activate or edit. Any launch target inside a preset file is cleared on import; add one yourself in the editor if you want it.
Questions
Do I need OSCulator or another bridge app?
Not for QLC+, Lightkey, or MagicQ. They read the InputConfig MIDI port directly. Heads up if you've seen OSCulator recommended: it shut down at the end of 2024, so I'd use Chataigne if you ever do need a bridge.
Does it work with a PlayStation or Switch controller?
Any controller InputConfig can see works, since the lighting app only ever sees MIDI.
Can I use a MIDI keyboard or fader box at the same time?
Your lighting app sees InputConfig and your other MIDI gear as separate inputs, so you can mix them however you like.
Is this free?
InputConfig is free and so is QLC+. The only thing you might need to buy is a USB-DMX interface or an Art-Net node to reach real lights.
Related
Free. macOS 14 or later. No account, nothing leaves your Mac. Open source on GitHub.