The parameter bridge
Map a knob, fader, or OSC message straight onto any parameter in your graph — once, and it sticks with the project.
The parameter bridge is the layer that takes everything coming in from your controllers — MIDI, OSC, gamepad, DMX — and lands it on the parameters you choose. You decide what controls what; DNA keeps a single, tidy connection between each input and its target, and saves the whole map inside your .dna file.
Pin a parameter, then bind it
The bridge drives pinned parameters. Pin any parameter you want to perform with (see The Parameters panel & hotbar), then attach a live source to it.
A binding is just a small rule: this incoming control → that pinned parameter, with a value range so the raw input lands where you want it.
Value range. A MIDI fader sends 0–127; an OSC slider might send 0.0–1.0. The binding remaps that raw number into the parameter's own range — so a fader can sweep a blur from 0 to 50, or a knob can drive an angle from -180 to 180.
Re-target freely. Because the binding lives apart from your nodes, you can point the same physical knob at a different parameter any time without rewiring the graph.
Each device is opened once and shared across everything that listens to it. You don't wire a controller into individual nodes — bind it to a parameter and DNA fans the values out for you.
MIDI learn — one-click capture
You rarely need to know channel and CC numbers. Arm learn on the parameter you want to control, then wiggle the physical knob or fader. DNA captures whatever moved and builds the binding for you. Do the same for a gamepad stick or button.
This is the fastest way to lay out a hardware surface: pin a row of parameters, then learn each one in turn.
See Inputs for connecting controllers, and the input.midi and input.osc nodes if you'd rather read values directly inside the graph.
OSC addresses and patterns
Every OSC message carries an address like /synth/cutoff. You can bind a specific address to a parameter, and you can use OSC address patterns (wildcards) so one binding catches a family of messages.
There's also a zero-setup shortcut: a freshly pinned parameter automatically answers to /pinned/0, /pinned/1, and so on, in pin order. Send to that address and it just works — no binding needed. You can override a pin's address if you'd prefer a friendlier name.
The Web Player has no live input or audio output. OSC, MIDI, gamepad, and DMX are desktop-only — design live-controlled pieces to run in DNA or the desktop The player.
The binding table is saved with your project
Every binding — its source, target parameter, range, and any OSC address overrides — is stored in your .dna file. Open the project on the same rig and your whole control surface is back exactly as you left it.
Enable flags and ports (which OSC port to listen on, which MIDI device, and so on) are part of your live settings and save too. The WebSocket input is off by default for safety; turn it on only when you need it.
A binding points at a parameter by name. If you rename or delete that pinned parameter, the binding can no longer find its target — re-pin and re-learn it.