Changing content
Every way content can be activated in Lightpath — operator clicks, schedules, logic rules, external APIs — and what happens downstream when it does.
Lightpath's job is to put the right content on the right output at the right time. There are five ways content can change, and a few things that can happen automatically once it does. This page surveys all of them and points you at the deeper docs for each.
What "content" means
Three types, each activatable by name:
- Looks — a source + palette + effects on a single output.
- Scenes — a named combination of looks across many outputs at once.
- Playlists — rotate through content over time. A playlist can span every output (cycling through scenes), or run on a single output (cycling through looks).
See Concepts for the full vocabulary.
How content changes
1. Manual — Controller and Kiosk
Lightpath ships with two human-facing pages for triggering content by hand. Pick the one that matches the audience.
Controller — the operator's daily tool. It is laid out in three columns:
- Outputs (left) — pick All Outputs, an area, or a single output. Outputs are listed under the area they belong to.
- Content (middle) — with All Outputs or an area selected, the tabs are Scenes and Playlists. An area shows only the scenes and playlists that play there; one that also reaches another area still plays everywhere it is set to when clicked. With one output selected, the tabs are Looks and Playlists for that output only. Click a card to play it. A scene can cover outputs in other areas, and a look can play on several outputs. When playing something changes outputs outside your selection, their rows in the outputs list flash briefly. The header above it names the selection and holds a brightness slider with a power button beside it; both apply to every output in the selection. The monitor sits between the header and the content.
- Right column — four sections, each folded or opened by clicking
its title. The Controller remembers which are open.
- Now Playing — what the selection is playing. When a playlist is running, its track list and transport controls appear here.
- Schedule — whether the selection follows the calendar: a switch for one output, or a menu of the selection's outputs for All Outputs or an area, with the calendar's current or next event below it.
- Controls — the Speed, Scale and Shape macros. They are marked All outputs because, unlike the rest of the column, they change every output whatever is selected. A slider moved off its resting point shows its value in orange. Double-click a slider or click its reset button to put it back. See Macros for what each one does.
- Palette — the palette each selected output is showing is outlined; outputs on different palettes outline several. Click a palette to recolor what the selected outputs are playing. The change is temporary: the next look, scene or playlist to play on an output brings its own palette back.
The picker at the top of the monitor chooses what it shows:
- All outputs — the previs of every output in the selection.
- All feeds — those previs plus every camera or other feed attached to the selection or to anything in it.
- Any one of them on its own. With one output selected, the picker also lists the feeds attached to its area and to the whole project.
The monitor arranges its views to fill the space it has. When there are too many to show at a readable size, the monitor scrolls.
The content tabs sit at the left of the toolbar above the content, beside search. The filter button after search opens Display options: all content or favorites only, sort order, grid or list, and large or small cards. While favorites only is on, the button is outlined and shows a dot. Small cards fit more content on screen under the monitor. Grid or list and the card size are remembered in this browser; favorites only and the sort order reset when you leave the page.
On a narrower screen the columns stack: the header, the monitor, the content, then the right column's sections.
If playing something would take outputs off the schedule while an event is running or coming up, the Controller asks before it plays. Each content tab also has a New button that opens the editor for that type. Use the Controller when the person at the keyboard is the one making the decision and needs the full toolkit.
Kiosk — a simplified, end-user-facing interface. Admins configure exactly which content and which controls appear on the Kiosk via the Kiosk Editor (Configure → Kiosk). Controls can include actions, device controls, dimmers, and TouchDesigner config parameters. Use the Kiosk when you want a venue staffer or client to be able to swap content without giving them the full Controller UI.
2. Scheduled — Calendar page
The Calendar drives content based on time. Each output has its own calendar-enabled flag:
- Enabled — the output follows whatever event is currently active on the schedule. If no event covers it right now, the output turns off. The schedule is the only thing that puts content on it.
- Disabled — the output ignores the schedule and stays on whatever the operator last selected via the Controller.
Create events two ways:
- Click-and-drag on the calendar grid (like Google Calendar)
- + New Event button in the top right
Event options:
- Instant or all-day events for one-shot triggers vs. all-day conditions
- Astronomical time — anchor start/end to sunset or sunrise, with offsets. Lightpath resolves the real time daily from the project location.
- Mandatory — even if an operator has manually overridden the schedule, this event will pull the output back to the schedule when it fires. Useful for "end of night" cleanup or "store opens at 9am" guarantees.
- Priority — if two events overlap, the highest-priority one wins.
An event can trigger content (a look, scene, or playlist) and/or an action.
A calendar-enabled output shows what the schedule puts on it. When Lightpath starts, and whenever an event playing on it ends, it plays the project's Default Content. If no default is set, or the default doesn't include that output, it turns off. Content played on it after that — from a control system, say — stays until the next event.
Set Default Content on the Settings page, under Defaults. It can be a scene, a look, or a playlist for one output. It is also what every output plays when Lightpath starts.
To give one output its own default, open it on the Outputs page and pick a look or playlist under Default Content. That output plays its own choice instead of the project's; the other outputs are unaffected.
For a baseline that changes through the day, use an all-day event with the content you want, and let shorter events sit on top of it.
3. Conditional — Logic page
The Logic page runs rules that fire when conditions change. Each rule is structured as:
IF (some conditions become true)
THEN (activate content, fire actions, set dimmers, etc.)Rules are edge-triggered — they fire when the condition group transitions from false to true, not continuously while it's true. You can configure:
- Duration — sustained grace period before firing (covers brief sensor blips that you don't want to act on)
- Cooldown — minimum time between firings to prevent rapid-fire
Conditions can read action states, device control values, TouchDesigner config parameter values, and other dynamic state.
Use this when content should change in response to something other than a human click or the clock — a sensor reading, an external state change, an action toggling on.
4. Programmatic — HTTP, OSC, TouchDesigner
External systems can trigger content over three protocols:
- HTTP API —
POST /api/looks/<name>/activate, scenes, playlists. Best for backend systems, schedulers, dashboards. - OSC API —
/lightpath/content/<name>with argument1. Best for AV software. - TouchDesigner Python API —
op.LIGHTPATH_API.ActivateLook("Sunset")from inside any TD script.
These are all peers of the manual paths — anything you can do in the Controller UI you can do via these APIs.
Content triggered over HTTP, OSC or MQTT works alongside the schedule rather than taking outputs off it:
- A scheduled event comes first. The content skips any output an event is playing on, and plays on the rest.
- Between events, the other system is in charge. What it plays stays until the schedule next changes that output — an event starting there, or one ending. The Default Content doesn't replace it.
- To play over an event, the other system takes the output off the schedule first, and hands it back when it is done (see the HTTP API).
This is what lets a control system such as Q-SYS drive an installation that also has a schedule.
See the API reference overview for use cases and worked examples.
What happens when content changes
Once content activates, three things can happen automatically — each configured separately.
Device content bindings — outgoing sync
A control on an HTTP or OSC device can carry a content binding: "when content X activates, fire this control." Lightpath sends the configured HTTP request or OSC message out to the other software, keeping it in sync with Lightpath's state.
Use this to make Lightpath drive other software:
- Switch a media server's clip when a Lightpath scene activates
- Tell a projection-mapping rig which content to load
- Update a lighting board's cue when a playlist track changes
Configure on the device's control: set its contentBinding.contentName
to the content that should drive it. See Devices for
the full setup.
Action content triggers
Actions can listen for content activations. An action's
contentTriggers list names content that should fire the action:
- For button actions — execute the action when that content activates.
- For toggle actions — set the toggle's state to a configured value
on activation. Optionally set a different state on deactivation by
configuring
triggerOn: "both".
Use this for side effects that should ride along with content:
- Turn the projector on when "Day Mode" scene activates
- Set lighting board cue 12 when "Performance" playlist starts
- Flip the "Show Live" flag (a stateful action) when the "Open" scene activates
See Actions for configuration.
OSC broadcasts
Whenever content activates, Lightpath sends OSC messages on port 9000:
/lightpath/content/<normalizedName> [1]
/lightpath/content ["Content Name"]Any listener bound to that port (a media server, a lighting console, a TD script on another machine) can react. This is one-way notification — the listener doesn't need to be configured as a Lightpath device.
See the OSC API outbound surface for the full list of broadcast addresses.
Picking the right approach
| If you want… | Use |
|---|---|
| Operator clicks to change content | Controller |
| End user picks from a curated set | Kiosk |
| Content changes at specific times of day | Schedule |
| Content changes when state changes | Logic |
| External system triggers Lightpath content | HTTP / OSC / TD Python |
| Other software stays in sync with Lightpath state | Device content bindings |
| Actions should fire when content changes | Action content triggers |
| Notify a listener of every content change | OSC broadcasts (always on) |
Most installs use several of these together — schedule for the daily arc, logic for sensor-driven moments, manual override for live tweaks, and device bindings to keep the rest of the AV rig honest.
Projects
The project model in Lightpath — folder anatomy, switching projects, users, custom roles, and how syncing keeps every machine on the same page.
Authoring looks
The Look editor — sources, palettes, effects, foreground layers, and the live-editing workflow that drives everything Lightpath puts on screen.

