TouchDesigner Overview
How Lightpath uses TouchDesigner, the component contract, and the shared patterns every output and plugin follows.
TouchDesigner is the engine that produces every pixel Lightpath puts on screen. Lightpath wraps a TouchDesigner project, loads outputs and plugins into it dynamically, routes content through them, and exposes their parameters to the web UI.
You author the TouchDesigner side as .tox files following a small
contract. There are two kinds:
- Outputs are the destinations — the components that take a final composed texture and push it somewhere physical: an LED controller over sACN/Art-Net, a projector via a screen, a video wall over NDI, a Spout sender. One output per physical destination in the install.
- Plugins are the moving parts that make the pixels going to
outputs. They come in three flavors:
- Sources generate textures — patterns, audio reactivity, media playback, shader visuals.
- Effects transform textures — blurs, color shifts, masks, geometric distortions.
- System plugins don't render anything; they send control signals or expose shared data other plugins react to (sensors, cameras, APIs). One instance per install.
A Lightpath look picks a source, stacks effects on it, and routes the result to one or more outputs.
This page covers the shared concepts — custom parameters, file paths — that apply to both outputs and plugins. The dedicated guides drill into each:
Custom parameters
Lightpath surfaces TouchDesigner custom parameters to the user interface, but only ones on specific parameter pages. There are three pages it cares about: Look, Config, and Status.
Look parameters
Any parameter on a page named Look is exposed per-look. Operators tune these in the look editor; each look stores its own values. Switching looks switches the values.
Use Look params for things an operator should be able to vary across looks — pattern speed, blur radius, mix amount, color shift, fit mode.
Note: Look parameters are not available for System plugins, since they are install-level instances. Their state doesn't change per look, so a Look page wouldn't have anywhere to land.
Config parameters
Any parameter on a page named Config is exposed at the project level — one value for the whole project, same across every look, every schedule event, every operator action.
Use Config params for things tied to the install rather than the look — network targets, monitor indexes, sample rates, file paths, default behaviors.
Config parameters show up in several places:
- Outputs page — each output's edit panel surfaces that output's config params alongside its other settings. Edit values and save new defaults that restore on project load.
- Plugins page — same pattern for sources, effects, and system plugins: each plugin's config params live next to the plugin itself.
- Actions — an action step can change a config param value.
- Logic — rules can read config param values as conditions.
- Kiosk — config params can appear as user-facing controls on the Kiosk page.
Status parameters
Any parameter on a page named Status is exposed to Lightpath as read-only state. The values stream live from TouchDesigner and appear in the TouchDesigner device on the Devices page — grouped by the component that exposes them — so operators can see at a glance what each component is doing.
Use Status params for things Lightpath should observe, not control — connection state of a remote service, last-received message timestamps, error counts, signal-presence booleans, current mode strings. They're read-only in the UI; nothing the user does in Lightpath writes back to them.
Status params also feed the Alerts system: every Status parameter becomes a selectable target in the alert rule editor, so you can notify operators when (for example) a connection goes offline or an error count climbs.
Status pages work on outputs and system plugins — the singleton components in a project. Source and effect plugins don't support Status pages, since each look can wire them in different combinations and there's no single "the source's status" to point at.
Which components support which pages
| Component | Look | Config | Status |
|---|---|---|---|
| Output | ✓ | ✓ | ✓ |
| Source plugin | ✓ | ✓ | — |
| Effect plugin | ✓ | ✓ | — |
| System plugin | — | ✓ | ✓ |
Refreshing the parameter schema
Lightpath detects schema changes — parameters added or removed on a
.tox while it's running — and re-scans automatically. Value
changes are streamed live; you don't need to do anything for either.
In the rare case Lightpath and TouchDesigner look out of sync (a rename that auto-detection missed, a refresh that didn't land), the TouchDesigner settings page has a Sync data button in the Process Status section that forces a full re-scan.
Accessing project files
When your output or plugin needs to reference external assets — 3D
models, images, spreadsheets, etc. — store them inside your
project folder and reference them via the project path shortcut.
If you add a 3D model at
my_cool_project/outputs/My_Output/model.obj, you can load it in
TouchDesigner with the path:
This path resolves correctly across machines and project locations because TouchDesigner reads it relative to the loaded project root. Don't use absolute filesystem paths — they break the moment the project moves.
Where to go next
- Making an Output — wire a new fixture, video wall, projector, or screen into Lightpath.
- Making Plugins — author a source, effect, or system plugin that any output can use.

