Blog
Node-based lighting control: sources, transforms and outputs
How a lighting graph works: sources produce values, transforms shape them, outputs send DMX, pixels or visuals.
WavePhase · 2026-08-23
Three kinds of node
A node graph is a drawing of how numbers flow. Sources produce values: live audio measurements, clocks, MIDI, OSC, a desk input, a button. Transforms shape them: smooth, scale, add, gate, a chase, a colour convert. Outputs send the result somewhere: DMX channels, pixel maps, a visual layer, or another protocol.
If you can say “the kick bump becomes a strobe after a gate,” you can draw it. The drawing is the show file. Cues and groups still exist; they are just more nodes or more destinations, not a separate religion.
Why people use graphs instead of only cue stacks
A cue stack is excellent at “this look, then that look.” It is awkward at “this dimmer should always be a smoothed copy of the bass, except when the pad is down.” Continuous live signals want wires, not a cue for every millisecond.
Traditional consoles still do this with palettes, FX engines and input assignments. A graph makes the wiring visible. Visibility is the point. When something is wrong, you can see which wire carries garbage.
Types and ranges
A dimmer wants 0–1 or 0–255. A colour might be RGB, a temperature, or a hue. A trigger is a pulse. Connecting a pulse to a colour input without a convert is how you get a white flash you cannot explain. Convert on purpose.
Macros and variables are named values you reuse: a house colour, a master scale, a fixture group intensity. Change the variable once instead of editing twelve wires. That is the difference between a patch you can tour and a patch you are afraid to open.
A first graph that is not embarrassing
Source: bass band. Transform: smooth, then scale into 0.15–0.85. Output: wash dimmer. Source: MIDI pad. Output: blackout multiply. Source: beat pulse. Transform: counter 0–7. Output: a small chase on a bar of PARs. Stop there. Live with it for a night before you add particles and a second philosophy.
What a graph will not save you from
A wrong start address is still a wrong start address. A broadcast Art-Net storm is still a storm. The graph is the brain. The patch and the network are the body. You need both.
How to read a messy graph
Start at the output and walk left. If the fixture channel is wrong, the beautiful audio chain does not matter. If the output is right and the value is dead, walk to the last transform. Name the wires. Unnamed noodles are how you ship a file nobody else can debug.
Disable half the graph when something is haunted. Binary search is faster than staring. A bypass on the smooth node tells you whether the wash is late because of lag or because the band is empty.
Save versions before clever nights. “Final_final_v3” is not a version. Date the file and write one sentence about what changed. Future you is a stranger.
Comments are part of the patch
Name nodes after what they do: “wash dimmer,” not “Math 14.” A graph with comments can be handed to a substitute. A graph without comments is a trap.
Group related wires visually if the editor allows frames or colours. Audio on the left, MIDI in the middle, outputs on the right is a convention worth keeping even if the software does not force it.
When you copy a macro, check the insides. A reused “club wash” that still points at last venue’s universe is a silent failure. Macros save time only if you treat them like code you own.
Teach the substitute the legend
A one-hour handoff should cover: where audio enters, where MIDI blackout lives, which nodes exist, and which file is tonight’s. If that takes a day, the graph is not ready for a substitute.
The best graphs look boring. Boring means the next person can add a fixture without archaeology. If a substitute needs a video call to change a colour, the file is not done. Print the legend. Keep it with the IP clipboard. The graph should explain itself in ten minutes or it is still a draft. Prefer fewer wires that are named over a dense masterpiece nobody will touch. That is the bar.
Related
If you want this in software
WavePhase is a desktop lighting app: a node graph that can take live audio, time, MIDI, OSC or an API and send the result to fixtures, pixels and visuals over Art-Net or sACN. The articles on this blog teach the craft. The app is one way to run it.
Free Early Access includes the editor and one DMX universe. Features and the quick start are the product docs — not a substitute for patching real hardware.
Free account required — no credit card — Windows, macOS and Linux.