Lightshow Editor
Lightshow Editor
The Lightshow Editor is a visual node-graph tool for authoring light shows — animations that drive the cabinet’s LED layouts. You wire a dataflow graph from sources (colors, gradients, noise, images, oscillators) through transforms and compositors into one or more Output nodes that emit a color field onto a named layout, and watch it animate in a built-in preview.
Each saved program is a named show with a clock mode: ambient (runs continuously) or clip (a fixed duration, optionally looping). See Node Editor Basics for the shared canvas gestures.
Working with shows
The toolbar’s Show section manages whole shows:
- A show picker dropdown lists every show as
name (mode); picking one loads its graph. A mode badge shows the active show’s mode. - New… creates a show — name and mode, plus duration/loop for clip shows.
- Meta… edits the active show’s mode, duration, loop, and seed.
- Delete show removes the whole show after a confirmation (it can’t be undone), then loads the next remaining show.
Managing shows needs the live engine; in sample mode you can still build a graph, but show create/switch is unavailable.
The node palette
The Add node palette groups the available kinds by category — rendered in the order Sources → Transforms → Composite → Feedback → Inputs → Outputs — with a legend chip per category:
- Sources ✦ — Solid, Gradient, Noise, Image, Sprite, Video, LFO (a low-frequency oscillator control value), Time (show time as a control value).
- Inputs ⊚ — Variable, a game-state variable surfaced as a control value.
- Transforms ∿ — Colorize, Levels, Threshold, Gain, Hue Shift, Warp, Blur, Remap, Mask.
- Composite ▤ — Blend (two fields) and Layer (stack any number of fields with a shared blend mode).
- Feedback ↻ — Feedback (blend the previous frame back in for trails) and Decay (a release envelope over a scalar field).
- Outputs ◍ — Output, which emits a color field to a layout as a compositor layer (with priority, blend, and opacity).
Ports are shape-coded by data type (for example a filled circle is a color field, a hollow circle a scalar field), so you can read a graph’s dataflow at a glance. Wiring is type-checked — a single scalar value does not feed a scalar field (a per-LED buffer), and no coercion happens.
Editing parameters and modulation
Basic params (numbers, sliders, toggles, selects) edit inline on the node.
Rich params (color, palette, asset reference, expression) show an inline button —
color and palette buttons lead with a live swatch — that opens an overlay editor.
A modulatable param gains an extra ƒ button that opens Modulate…, where
you drive it with a cade expression over var.* or wire it from another
node’s output.
Live preview
A small LED preview panel renders the show’s real per-LED output and animates it live — a generative show plays here as you build it. The preview follows the first Output node’s target layout, so a show needs an Output pointing at a layout for anything to appear. With no engine or no active show it shows a dark “no output” state.
Following the 3D selection
With Follow 3D selection on (an Options-menu toggle), selecting a light-bound device in the Object Editor correlates and highlights the matching lamp nodes here. You can also jump straight in from the object editor’s right-click Open in editor ▸ Light editor ◐ deep-link, which opens the lightshow editor focused on the device you came from.
Accessibility: colorblind-safe palette
The ⚙ Options menu has two persisted toggles: Colour-blind-safe palette and Output-colour preview. The palette toggle only changes node/port colors (swapping to an Okabe–Ito colorblind-safe set) — it never hides or reveals nodes. Categories stay distinguishable by glyph, label, and port shape in either mode.
Live vs. sample
Backed by the live engine, the editor reads the real node catalog, lists and loads authored shows, and persists every edit through a read-after-write loop (a rejected edit reverts with the reason shown in a red banner). Those edits also survive a reload and sync live to other open windows on the same table.
If the engine can’t be reached the editor falls back to a bundled catalog and a blank document: you get the full palette and can build freely, but edits stay in your browser and show management is unavailable — an empty show picker is the clearest sign you’re in that state.
Picking assets
An asset param on a node — the file behind an Image, Sprite, or Video source — opens the asset browser as a picker rather than asking you to type a path. It browses both inventories at once: media you’ve uploaded (models, images, audio, video) and what the live table already has (synth patches, clips, lightshows, triggers), so one gesture covers everything bindable, with a preview of the row you’re about to choose.