Universal Controller MIDI

Advanced

OSC mode

Run Universal Controller MIDI as an OSC sender — alongside MIDI or instead of it. Real OSC addresses, UDP targets, bundled timestamps, no DAW required.

Updated

OSC mode turns every gamepad input into an Open Sound Control message and fires it over UDP to one or more targets. Run it alongside MIDI for hybrid setups, or flip MIDI off entirely when you're driving Resolume, TouchDesigner, MadMapper, or a custom Max patch.

OSC is float-precise, address-routable, and not stuck inside 7-bit hell. For anything visual or generative, it's the protocol you actually want.

payload size comparison MIDI 3 bytes OSC ~28 bytes (path + floats) /controller/lstick <f> <f>
OSC vs MIDI byte size — OSC trades compactness for human-readable addresses and float precision.

Addresses + targets

Every binding has an OSC address. Defaults follow a sensible /controller/<input> shape, but the mapping editor lets you rewrite any path. Sticks ship two floats per packet; triggers ship one float in [0.0, 1.0]; buttons ship an int 0 or 1.

/controller/lstick   0.241  -0.882
/controller/ltrigger 0.74
/controller/cross    1
/composition/clip1/connect 1

Targets are configured per-bridge in Settings → OSC. Each target is a host:port pair — 127.0.0.1:7000 for local Resolume, 192.168.1.42:9000 for a TouchDesigner machine across the LAN. Multi-target broadcast is supported; the same input fires to every active target.

OSC address patterns by host

Every host listens for a slightly different convention. The bridge ships templates for each — load one in the mapping editor and the addresses prefill correctly. Reference table:

HostDefault portAddress patternPayload
Resolume Arena7000/composition/clip<n>/connectint 1
Resolume master7000/composition/masterfloat [0.0, 1.0]
TouchDesigner7000/<chan> (user-defined)any float or int
MadMapper8010/surfaces/<name>/opacityfloat [0.0, 1.0]
Max / MSP7400/<anything> via udpreceivearbitrary
VDMX1234/control/<name>float
Ableton (Live OSC)9000/live/track/<n>/volumefloat dB

Hybrid mode — MIDI + OSC simultaneously

Both backends run on the same input event. Map LT to CC 11 for your DAW and /composition/master for Resolume — one trigger pull drives both. Bundled OSC packets ship with timestamps so receivers can re-order or schedule them on a 1 ms clock.

{
  "input": "LT",
  "outputs": [
    { "type": "midi", "port": "Universal Controller", "channel": 1, "cc": 11 },
    { "type": "osc",  "target": "127.0.0.1:7000", "address": "/composition/master" }
  ]
}

For a real-world comparison of when to pick which protocol, the OSC vs MIDI deep dive walks through latency, range, and addressability head-to-head.

Resolume + TouchDesigner quick paths

Resolume maps incoming OSC by listening on a port and right-clicking any control → "Edit OSC Input". TouchDesigner uses an OSC In CHOP with the same port. Both accept the address paths above without translation.

Real-world scenarios

Five places OSC mode pays for itself:

  1. VJ live set. Triggers fire clip launches in Resolume, sticks drive composition opacity + master. One DualSense replaces a $400 APC mini and a separate visual controller.
  2. TouchDesigner generative show. Touchpad XY sweeps two CHOP channels that drive a particle system. 32-bit float means no visible step quantisation when you slow-scrub the field.
  3. Ableton Live OSC remote. Use the Live OSC pack — track volumes, sends, scene launches. Avoids the 14-bit CC headache for fader-style precision.
  4. Custom Max patch. Pipe raw stick floats into a udpreceive object, route through your own scaling, and you've built a bespoke instrument in 20 minutes.
  5. Networked installation. Bridge runs on one machine, sends to four projection PCs on a LAN. Each PC subscribes to a different address subtree — /wall1/*, /wall2/* — and renders its slice.

OSC mode is a Pro feature. Free runs MIDI only. See Pro vs Free for the full split, or jump to MPE mode for polyphonic expression on the MIDI side.

Edit this page on GitHub Updated
ESC

Type to search.