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 has two views:

  • All Outputs — activate a scene or playlist that affects every output at once.
  • Per Output — activate a look or playlist for that output only.

Each view has buttons to create new content (looks, scenes, playlists) inline without leaving the page. 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 is active right now, the output falls back to the project's default scene (if one is configured); otherwise playback stops.
  • 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.

Set a default scene in your project settings if you want calendar-enabled outputs to show something during gaps in the schedule. Without it, outputs go dark between events.

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 APIPOST /api/looks/<name>/activate, scenes, playlists. Best for backend systems, schedulers, dashboards.
  • OSC API/lightpath/content/<name> with argument 1. Best for AV software.
  • TouchDesigner Python APIop.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.

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 contentController
End user picks from a curated setKiosk
Content changes at specific times of daySchedule
Content changes when state changesLogic
External system triggers Lightpath contentHTTP / OSC / TD Python
Other software stays in sync with Lightpath stateDevice content bindings
Actions should fire when content changesAction content triggers
Notify a listener of every content changeOSC 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.