TouchDesigner already has joystick handling. So the first honest question about using an Xbox controller in TouchDesigner is not "can you" — it is "why would you put a MIDI bridge in the middle instead of reading the device directly?"
The answer is about where the cleanup happens. Raw device axes arrive jittery, uncalibrated and linear. You can fix all of that inside the patch with Lag, Limit and Math CHOPs — and then you do it again in the next project, and the one after that, each time slightly differently. Moving that work upstream means every patch inherits the same cleaned-up, named, portable channels.
- What you do: bridge the pad to a virtual MIDI port, pick it up with a MIDI In CHOP, wire channels to parameters.
- What you need: any Xbox pad, TouchDesigner, macOS 12+ or Windows 10+.
- Free vs Pro: MIDI In CHOP works free. OSC and 14-bit sticks are Pro.
- The point: calibration and curves live upstream, not in every patch.
Why not read the gamepad directly?
Three reasons, in order of how much they will annoy you.
- Stick drift becomes a permanent offset. A worn pad at rest does not sit at zero. Read raw, and that offset leaks into whatever parameter you tuned yesterday, and the piece looks subtly wrong with no obvious cause. Deadzone handling upstream makes rest mean rest.
- Linear is rarely what you want. A stick mapped linearly to a scale or a rotation feels twitchy in the middle and vague at the ends. Response curves fix that, and you want one curve definition shared across projects, not seven slightly different Math CHOPs.
- Raw axes are unnamed. You get indices. Six months later nobody remembers which index was the left trigger, and the patch is undocumented by construction.
None of this is unique to Xbox pads — the DualSense TouchDesigner guide makes the same argument. What is specific to Xbox is what the hardware does and does not give you, which is worth settling before you design a mapping.
What an Xbox pad gives a patch
Sixteen buttons, two clickable sticks, a d-pad, and — the part that matters most for visual work — two genuinely analog triggers. LT and RT sweep across their full pull on every Xbox One, Series X|S and Elite controller, so they are continuous controls, not switches.
What it does not have: a touchpad, adaptive triggers, or a gyro. If your patch wanted an XY surface, the right stick is the substitute, and it springs back to centre — a different feel to the absolute positioning a DualSense touchpad gives you. Worth knowing before you design around it rather than after.
On an Elite Series 2, the four rear paddles are the most underused inputs on any gamepad. They sit where your fingers already rest, which makes them ideal for momentary states — hold to override, hold to solo a layer. The paddle mapping guide covers treating them as a layer rather than four more buttons.
Getting the signal into a CHOP
The MIDI route, on the free tier
On macOS, open Audio MIDI Setup, choose Window → Show MIDI Studio, double-click IAC Driver and tick Device is online. On Windows, use the bridge's bundled virtual port, or route through an existing output such as a loopMIDI port if that driver is blocked from registering — MSIX sandboxing and some EDR agents both do this.
Then in TouchDesigner, add a MIDI In CHOP and select the port in the MIDI Device Mapper. Move a stick and channels appear. Immediately follow it with a Rename CHOP — turning ch1 into lt costs ten seconds now and saves a confused hour later.
The OSC route, on Pro
Point the bridge's OSC output at a host and port, then add an OSC In CHOP or DAT listening there. Addresses arrive by name, which sidesteps CC numbering entirely. The OSC show-control guide covers structuring the address space for a real show file rather than a sketch.
MIDI or OSC — which one for this patch?
MIDI first, almost always. It is free, it is in every host, and it is the fastest way to prove the signal path works end to end before you invest in structure.
Switch to OSC when one of these becomes true: the patch has more parameters than 128 CC numbers can address comfortably; you want the controller on one machine and the render on another; or you have started keeping a spreadsheet of CC assignments. That last one is the real tell. OSC vs MIDI from a gamepad goes through the trade properly.
There is a third option worth knowing about: run both. Physical inputs over MIDI for the fast moves, a tablet surface over OSC for state you need to see. The Open Stage Control hybrid setup covers that pattern.
Resolution — when 7-bit shows its seams
A standard MIDI CC is 7-bit: 128 steps. On a fast move nobody notices. On a slow sweep driving something large and projected — a scale, a rotation, a shader uniform — 128 steps staircase visibly.
Pro raises the sticks to 14-bit, which is 16,384 steps and smooth at any speed. If you are only ever triggering and switching, 7-bit is fine and the free tier covers you. If you are riding a parameter slowly on a big output, this is the difference that will make you upgrade.
Does anything come back to the controller?
No. The bridge sends and TouchDesigner listens — one-way by design. Xbox rumble can be driven from the bridge's own feedback input on Pro, but that is the bridge receiving MIDI, not TouchDesigner controlling the pad. Worth stating plainly because people reasonably assume a USB device is bidirectional.
Same applies to lighting. The bridge outputs MIDI and, on Pro, OSC. It does not output DMX or Art-Net. If a rig ends in fixtures, the conversion happens downstream — in TouchDesigner itself, or in a dedicated lighting stage after it.
A starting mapping
| Input | Channel | Typical job |
|---|---|---|
| LT / RT | CC 1, CC 2 | Two continuous parameters — the headline moves |
| Left stick X / Y | CC 3, CC 4 | Position, or a 2D noise offset |
| Right stick X / Y | CC 5, CC 6 | The XY substitute — effect amount and character |
| A / B / X / Y | Notes 60–65 | Scene or preset recall |
| D-pad | Notes 78–81 | Step through presets without a mouse |
| LB / RB | Notes 67, 69 | Momentary holds — override, bypass |
| Elite paddles | Notes 70–73 | A second layer under your fingers |
Leave the stick clicks and menu buttons unmapped. An input that does nothing is an input that cannot fire something unexpected when you pick the pad up.
Three things that bite in a live patch
Everything above works on a desk. These are the ones that only show up once the patch is driving something you cannot pause.
- Note-on without note-off. A MIDI In CHOP holds a note channel at 1 until the note-off arrives. If you map a momentary hold to a note and the pad disconnects mid-press, that channel stays latched at 1 forever. Use a Trigger or Logic CHOP with an explicit reset rather than trusting the note-off to always land.
- Bluetooth dropouts look like frozen parameters. When a wireless pad drops, channels do not go to zero — they hold their last value. A stuck rotation reads as a render bug rather than a connection problem, and you will debug the wrong thing. Wired removes this entirely, which is the real reason to cable up for a show.
- Channel order is not guaranteed across sessions. If you reference channels by index and the device enumerates differently after a reboot, every parameter shifts by one. This is exactly why the Rename CHOP matters — reference by name and a reorder is harmless.
None of these are specific to Xbox hardware; they apply to any gamepad reaching a patch over MIDI. They are just the three that cost the most time when nobody warned you.
If you perform as well as build, the same pad and preset work in Resolume, and in Ableton Live if you produce. The TouchDesigner hub has every guide for this host in one place.
Calibrated, named, portable channels before TouchDesigner ever sees a value. Universal Controller MIDI is free to try on Mac and Windows; OSC and 14-bit sticks are Pro.