Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

PRISM Manual

User documentation for the PRISM lighting console — a bring-your-own-hardware platform where a small local server owns the show file and DMX output, and any device connects as a client over the network.

Use the navigation on the left to find a topic, or the search box to find a term.

Latest online version: https://prismconsole.io This copy is bundled with your console and works fully offline; the online version tracks the newest release, while this one matches the version you installed.

System Overview

PRISM is a software lighting console. A lightweight server owns the show file and DMX output; any number of devices connect to it as clients over the network.

How It Works

  1. The server runs on the machine connected to your lighting rig (mini PC, Mac, or Raspberry Pi). It owns the show file and drives the DMX output.
  2. Clients — desktop, tablet, or phone — run the PRISM app and connect to the server. Every client sees the same show state, updated in real time.
  3. One show file serves any number of clients. Multiple consoles can work on the same show at once, with a session master coordinating them (see Multi-User Sessions).
  4. Offline deployment: you can export the entire show file to a single file and import it on a disconnected console (see Remote Access & Show File Portability).

What the Server Does

  • Holds the show file: fixtures, sequences and cues, groups, value sets, presets, playbacks.
  • Runs the show: cue playback, intensity masters, flow effects, and overlays.
  • Outputs DMX over the network (Art-Net / sACN to your output hardware).

What a Client Does

Everything you would do at a console: program cues, run playback, adjust masters, browse the patch. A desktop client gives you the full multi-window workspace; smaller screens adapt down to single-purpose views.

Device Connectivity

PRISM runs on any device. Each console runs its own lightweight server that handles DMX output, and your other devices connect to it as clients.

Running the Server

The server is bundled with the app — installing PRISM is all there is to it. When you open the app, it starts the server for you (or connects to one that is already running), so you never have to start a server manually.

  • The server keeps running if you close the app — a live rig is never cut dark by an app quit. It restarts automatically if it ever crashes.
  • To stop it, use Shut down server at the bottom of the Connectivity window. Only do this when the rig is not needed.
  • On a dedicated rig machine (for example a Raspberry Pi), the server can also run standalone without the app.

Reliability metrics

To help find reliability problems, the app can send a small metrics file to PRISM’s servers about every 6 hours: the app version and a set of counters (boots, cues saved, GOs run, DMX tick health, RPC errors, crash counts). It never includes show data, fixture names, or file names. Your IP address is recorded at the server for rate-limiting abuse and is never displayed; the dashboard shows OS-level aggregates only.

The switch is Connectivity → Reliability metrics. It is on by default in the beta; turn it off at any time and nothing is sent.

Connecting a Device

On the Same Machine

If the PRISM app runs on the same machine as the server, it connects automatically — no pairing, no codes.

On the Network (Pairing)

  1. Open the Connectivity window on the client and enter the server’s address.
  2. The server presents a short pairing code.
  3. The operator of the primary console approves the pairing.
  4. The client remembers the connection — after the first pairing it reconnects automatically.

Not Yet Available

  • mDNS/Bonjour auto-discovery — the client can scan for PRISM consoles, but the server does not advertise itself yet, so enter the address manually.
  • Cloud discovery / relay — finding and reaching a console across networks is not implemented.

Completely Offline (Export/Import)

For completely isolated consoles, program on a network-connected instance, export the show file to a single file (in the Show Files window), move the file (USB drive or local transfer), and import it onto the offline console. Importing replaces the console’s current show; a snapshot of the previous show is saved first so you can import it back if needed.

Supported Devices

DeviceRole
iPadFull programming surface
Android tabletProgramming or operation
PhonePlayback and master control
Laptop/DesktopDesign workstation with multiple windows

Device Layouts

The UI adapts to each device:

  • Phone — Single-column layout focused on playback status and master control
  • Tablet — Split layouts pairing the programming surface with playback or pools
  • Desktop — Multi-window workspace with all tools visible simultaneously

Patching Fixtures & the Library

A patch is the list of fixtures in your show and where each one lives on the DMX line. PRISM has two parts: a fixture library (the catalog of fixture profiles you can choose from) and the patch itself (your show’s actual fixtures, each with a name and a starting address).

The Fixture Library

Profiles come from a built-in catalog: one profile per fixture and DMX mode (for example, “Archspot” with its 6-channel mode and its 8-channel mode as separate profiles). The catalog is ready from the first start, and restarting never duplicates profiles.

gDTF Import

The Patch window’s gDTF button (top right) imports a .gdtf file into the fixture catalog. Tap Browse… to pick the file, then Import. Profiles parse from the file’s first DMX mode; existing profiles are not duplicated.

Adding Fixtures

The Patch window (Setup category) lists the fixtures in the patch (name, profile, channel count, starting address); tap a fixture to unpatch it. The Add button opens the add-fixture flow:

  1. Profile — pick from the library, searchable by manufacturer or name.
  2. Quantity — how many fixtures to add; they are patched as a contiguous run (each following the previous by the profile’s channel count) and named with a trailing index.
  3. Address — the starting DMX address (1–512). The screen checks the range live: overlapping addresses and ranges past 512 are rejected before you can save.
  4. Name — a friendly name for the run. Leave it empty and the fixture is named after its patch id.

In the current release every fixture is patched into universe 1; there is no universe field when adding a fixture. Addresses 1–512 are one DMX universe.

Browsing the Patch

  • Fixture Sheet — the full patch as a grid: one row per fixture, live channel values from the engine. Two display modes: Channel (level bar and color swatch per fixture) and Sheet (one column per attribute, in DMX order, with a mask to hide columns you don’t need). Tap a fixture row to select it in the programmer; double-tap a value cell to type a value (0–255) and set it.

Fixture names show wherever the fixture appears; unnamed fixtures fall back to “Fixture 1”, “Fixture 2”, and so on.

DMX Output & Universes

The server is the transmitter: it sends DMX over the network (DMX-over-IP) from the machine it runs on. No extra console hardware is needed — your output devices are any DMX-over-IP receivers (Art-Net/sACN nodes, gateways to conventional DMX) on the same network.

The DMX Output window (Setup category) configures how DMX leaves your console.

Output On/Off

The Pipeline card has a switch: on = PRISM is transmitting DMX to your output hardware; off = no DMX leaves the console at all. The card also shows the currently active protocol.

Protocol

PRISM transmits two wire formats, chosen as the global default:

  • Art-Net — the classic DMX-over-IP protocol; sends to the destination IP.
  • sACN (E1.31) — the modern standard for DMX-over-IP; by default it sends to the standard sACN group address, so any sACN receiver on the network can pick it up.

Both are 8-bit per channel (512 channels per universe).

Destination

  • Default destination — the IP address universes send to when they have no override. Enter an IP and press Enter to save.
  • Per-universe overrides — every universe has a row. You can give any universe its own destination IP and/or its own protocol (Art-Net, sACN, or “Default” to follow the global choice), and reset it back to the default. A mixed setup is fine: universe 1 can go to one receiver over Art-Net while universe 2 goes to a different receiver over sACN.

The number of universe rows is set by your installed license (see Licensing) — you never see more universes than your license allows.

Global Fade

Global fade in / fade out times (milliseconds) applied to the output.

Monitoring

The DMX View window (Monitor category) shows the live values of the selected universe, channel by channel, updating in real time. The Channel Matrix window shows the same data transposed: channels down, fixtures across.

Not yet available: in the current release all patched fixtures live in universe 1, so the per-universe rows and multi-universe routing are pre-wired for larger patches rather than something you will use on a single universe today.

Licensing

PRISM is licensed per server, with a license file that lives in the server’s data directory. The License window (Add Window → Setup → License) always shows you the license the server is running on.

What a License Controls

  • Parameter budget — the total size of your patch. Each channel of every patched fixture counts against it; 16-bit (coarse + fine) channel pairs follow the standard parameter counting.
  • Maximum universes — how many DMX universes your show can use. The DMX Output window only offers as many universe rows as your license allows.
  • Maximum nodes — how many machines (this master included) may join a session.
  • Features — flags for optional capabilities.
  • Expiry — optional. A license with no expiry never expires; a dated one does.
  • Machine binding — see Machine Binding.

Without a Valid License

Without a valid license file, all DMX output is disabled: every universe stays dark, and no new nodes can join. The console itself keeps working — you can browse the show, configure the patch, and program — so nothing is held up while you wait for a license. As soon as a valid license is installed, output is live again.

An expired license behaves the same way: output goes dark while the console, show data, and editing keep working.

What Happens When Limits Are Reached

  • Patch — adding a fixture that would exceed the parameter budget is rejected; your existing patch is untouched.
  • Universes — universes beyond the licensed cap are never enabled.
  • Nodes — once the session has its licensed number of nodes, new nodes are refused a join with an explicit “license limit” message; existing nodes reconnecting are unaffected.
  • Expiry — an expired license cuts all DMX output while the console, show data, and editing keep working.

Renewal

Replace the license file with the renewed one, or install it from the License window — no restart needed. PRISM checks for changes every hour:

  • an expiry renewal brings DMX output back the moment it is applied, and an expiry that passes mid-show darkens output within an hour;
  • a universe-cap increase takes effect the same way (universes up to the new cap can then be enabled);
  • changes to the node count or parameter budget apply at the next restart.

A file that lowers limits or has a worse expiry than the one in force is ignored — renewal only ever improves what is running.

Machine Binding

A license is either bound to one console or universal:

  • Bound — works only on the console whose machine ID matches the one in the license. The machine ID is stable for the hardware (it survives reinstalling the app or the operating system). It is shown in the License window with a copy button — send it in when ordering or renewing your license, and you get back a file that works on that console and nowhere else.
  • Universal — works on any console. These are time- or capability- limited by design (for example, a beta or promotional license), so they are safe to share within their limits.

The License window shows which kind of license you are running: bound licenses display the Bound to machine ID next to the limits.

Installing a file that is bound to a different console is rejected with an error; your current license is left untouched.

Activating with a Code

Instead of handling a license file, you can activate with a code:

  1. Ask for a code (for example, when you buy or renew a license).
  2. Open the License window and paste the code into the Activation code field, then press Redeem.

That is the whole step. The code is exchanged for a license bound to this console — the machine ID is read from the hardware automatically, nothing else to send. When the code is accepted you are licensed immediately, no restart.

  • A code is single-use: one code licenses one console. Redeeming it a second time — on any console — fails, and the error is shown in the window.
  • If your machine’s hardware changes (a new machine, a failed disk that changes the machine ID), the old code cannot be reused — contact Prism for a replacement code.
  • If the console cannot reach the license server (no internet, or egress disabled), the window says so. The code has almost certainly not been used, so try again later. In the rare case the connection dropped after the license server had accepted the code, a retry is refused as already used — contact Prism; that is treated as a rebind.

Expiry and the Console Clock

A dated license (for example, a 30-day trial) is checked against the console’s system clock at startup and hourly. If the clock appears to have been set back, output is switched off until the clock is correct again — no restart needed.

Viewing and Installing in the App

Open Add Window → Setup → License to see the license the server is running on. The banner shows the current state — green Licensed, or red Locked / Expired (DMX output disabled) — along with owner, expiry, and the universe / parameter / node limits. The window also shows this console’s Machine ID (with a copy button) and, for bound licenses, the Bound to machine.

Install license file… opens a file picker. The file is verified before it is accepted — including its machine binding — and the new limits are applied live, no restart needed. A missing, corrupted, tampered, or wrong-machine file is rejected with an error and your current license is left untouched, so an upgrade attempt can never downgrade or break a running installation.

The Activation code field activates a single-use code for this console — see Activating with a Code.

The Controls Window

The Controls window (in the Programming area) is the primary programming surface. It shows the current programmer state — which fixtures are selected and what values you have programmed — and every control you move sends values straight to the selected fixtures.

When no fixture is selected the window shows “Select fixtures to adjust”. The controls still work, but they have nothing to target.

Toolbar

The toolbar above the tabs carries:

  • Recording mode — the Propagate / Isolated / Backtrack selector. The active mode is highlighted. See Recording Modes.
  • Clear Selection — deselects all fixtures. Programmed values are kept.
  • Clear Data — clears programmed values (the selection is kept). See Clearing Data.

Selecting Fixtures

Selection happens on the other surfaces and the Controls window reflects it:

  • Stage Map — click a fixture to select it, shift-click to add or remove one, or drag to select a range. See Stage Map.
  • Live view — clicking fixtures there syncs the same programmer selection.

The LACS Tabs

The window is organized by the four LACS groups (Dimmer, Color, Gobo, Position). See Param Groups for how fixture parameters map to these groups.

Dimmer

  • A vertical intensity bar — drag it to set the level; the bar shows the percentage.
  • FINE toggle — switches drag sensitivity and step size from 10% to 1%.
  • FULL / OUT buttons — set 100% or 0%.
  • ±10 / ±1 step buttons — nudge the level (size follows the FINE toggle).

Color

The full Color Tool is embedded on this tab: CIE, RGB, CMY, and HSI modes, live preview, and the color library. Your color is mapped onto each selected fixture’s real RGB channels from its patch profile; fixtures without RGB channels (for example, a color wheel) are skipped rather than guessed. You can also save the current color to the preset library from here.

Gobo

The Gobo tab shows every shape channel of the selected fixture: gobo, gobo rotation, focus, iris, shutter, strobe, and the like (recognized from the profile’s channel names and LACS category).

  • Gobo channels with named positions — a gDTF file that names its gobo slots (e.g. “Open”, “Dots”, “Leaf”) renders a slot grid: one button per named DMX value, in DMX order. Tap a slot to set it; the slot matching the current value is highlighted. Fixtures whose gobo channel has no named positions fall back to a plain slider.
  • All other shape channels — a slider per channel. The scale is the channel’s gDTF sweep in degrees when the profile carries one, otherwise 0–255.

Profiles imported from gDTF files carry their slot names automatically; legacy (non-gDTF) profiles have no named positions, so their gobo channels show as sliders.

Position

Pan and tilt are free-input sliders: drag to set an absolute angle. The angle is shown relative to center — a 540° pan sweep runs −270° to +270°, with 0° dead center. The sweep range comes from the first selected fixture’s profile when it carries a gDTF range (or the seeded catalog’s); fixtures without range metadata fall back to a generic 540° pan / 270° tilt. The CENTER button zeroes both axes; FLIP mirrors the tilt.

Sending Values (Direct Mode)

Every adjustment applies immediately: values go to the selected fixtures and are visible on the DMX output without a cue. Values are tracked per fixture, per attribute family — setting a color does not wipe the dimmer level you just programmed.

Clearing Data

Clearing works in stages:

  1. Clear Selection clears the fixture selection and keeps all data.
  2. Clear Data moves the active values to an inactive set — they no longer drive the output.
  3. Clear Data again releases the values from the output entirely.

Recording to a Cue

  • New sequence with a first cue — in the Sequences window, “Create New Sequence” asks for a name and offers “Save current programmer state as first cue” (only available when the programmer holds values).
  • Record cue — from a sequence’s cue list, “Record cue from programmer” prompts for a name and captures the programmer’s active values as a new cue in that sequence.

The cue stores the active attribute values and the current recording mode. See Recording Modes for what each mode does.

Storing as Value Sets and Presets

  • Value Sets — store parameter values under the four LACS group tabs (capture/recall limits are noted on that page).
  • Presets — the Preset Pool data view (see Data Views) lists presets, and presets can be created from the preset window and from the Color Tool.

Not yet available: preset capture. Presets created today store only a name and category — no values are captured, so applying one has no effect.

Lock and Override

Cue cards in the Sequences window show each cue’s lock and override status.

Not yet available: lock/override editing — the toggles show “coming soon”.

Value Sets

Value Sets store parameter values that can be applied to any fixture. The Value Sets window organizes sets under four LACS group tabs: Level, Aim, Hue, and Shape.

Value capture works: storing a set records the current programmer values for the selected fixtures, limited to the LACS family of the tab you are on (the Level tab records dimmer values, the Hue tab records hue/white, and so on). Recalling a set applies its stored values to the stage — only the attributes in the set change; everything else is untouched. Embedding and range sets are not yet available.

Value Set Modes

The Store dialog offers three modes:

ModeIntended behavior
SelectiveOnly records and recalls attributes that have values in the set. Other attributes are untouched.
GlobalRecords all attributes for the fixture type, including zeros. Recalls complete fixture state.
UniversalRecords values that apply to any fixture type, mapping to equivalent parameters automatically.

The mode is stored with the set; recall currently applies the stored attributes only (Selective semantics) for all three modes.

Value Set Embedding

Not yet available. Referencing one value set from another (hierarchical embedding with propagated changes) is not yet available.

Range Value Sets

Not yet available. Range value sets — value spans that interpolate across fixture positions, such as a hue gradient across a wash — are not yet available.

Working with Value Sets

  1. Open the Value Sets window
  2. Choose a LACS tab (Level, Aim, Hue, or Shape)
  3. Select fixtures and set their values in the Controls window
  4. Tap + to store a set: enter a name and pick a mode (Selective, Global, or Universal) — the current programmer values for the selection are captured
  5. Tap a set card to recall it, or use the trash icon to delete it

New sets are stored under the tab they are created on, and each tab lists only the sets of its own group. Storing is blocked until fixtures are selected in the live view and the selection carries values for the current tab’s LACS family.

Flow Effects — Multi-Step Animation

Flow Effects define multi-step animations. Each Flow Effect has a waveform type (Sine, Saw, Square, or Triangle), a global speed, a global phase offset, and one or more steps, each with its own timing controls.

Now available: effects drive DMX. Assign fixtures to an effect, press ▶ to start, and your fixtures animate on the rig — layered over the rest of the show (the brighter of the two wins) and scaled by the effect intensity (0–2×). Stop (■) returns the fixtures to whatever else drives them.

Not yet available: per-attribute settings. Each step’s speed/phase/width/transition are stored and editable, but the effect runs at its global speed and phase; step-level parameters (and per-attribute speed/phase/enable) take effect when step-driven animation lands. Stopping the show (or restarting the server) stops running effects.

Flow Effect Steps

Each step in a Flow Effect defines:

  • Speed — How fast the effect cycles
  • Phase — Offset within the cycle (0–360°)
  • Width — Portion of the selection affected at any moment
  • Transition — How values blend between states (Fade, Snap, Ease In, Ease Out, Ease Both)

Acceleration and deceleration are part of the step data model but are not yet exposed in the step dialog.

Per-Attribute Control

Each attribute in a Flow Effect step can carry its own speed multiplier and phase offset. For example, a moving head can pan at one speed while hue shifts at another, creating complex organic movement.

Not yet available: per-attribute settings. The step dialog does not yet expose per-attribute speed, phase, or enable controls.

Using Flow Effects

  1. Create a Flow Effect: name plus waveform type (Sine, Saw, Square, or Triangle)
  2. Adjust the global Speed (0.1×–10×) and Phase (0–360°) sliders — the animated waveform preview shows the effect shape
  3. Tap the Fixtures: N chip and assign the effect’s fixtures from the patch
  4. Press ▶ Start — the fixtures animate on the rig; the intensity slider (0–2×) appears while running
  5. Press ■ Stop to return the fixtures to the rest of the show

Fixtures are spread across the waveform with a phase offset per fixture, so they don’t all move in lockstep — each animated value is layered over the fixture’s dimmer level (the brighter of the two wins). Live edits (speed, phase, intensity, fixture list) reach a running effect without restarting its phase — the animation never snaps on a slider move.

Steps are still authoring-only: each step’s own speed, phase, width, and transition are stored, but the effect runs at its global speed and phase until step-driven animation lands.

Param Groups (LACS)

All fixture parameters are organized into four groups, providing consistent navigation regardless of fixture type.

The Four Groups

GroupParameters
LevelDimmer, level, intensity
AimPan, tilt, position, beam position, zoom
HueColorAdd R/G/B, hue, color, white
ShapeBeam, gobo, effect, shutter, strobe, focus, iris

Benefits

  • Consistent workflow — The Controls (programmer) window is organized by these groups: Dimmer, Color, Gobo, and Position tabs
  • Cleaner value sets — The Value Sets window carries one tab per group (Level, Aim, Hue, Shape)
  • Better organization — Programmer controls and value sets are both organized by group

How It Works

When a fixture definition is imported from a GDTF file, PRISM maps its attributes to the LACS groups. A moving head’s pan and tilt land under Aim; an RGB LED bar’s R, G, B channels land under Hue. Attribute types without a mapping get no group. The group is the same; the underlying channels differ.

Presets & the Library

A preset is a saved set of fixture values — a ready-made look you can recall with one tap. Presets are stored in the show file on the server, so every connected console sees the same presets.

Where Presets Live

The Preset Pool window — presets as pool tiles. Tap a tile to apply it. A filter in the window header shows everything (All) or one attribute group: Intensity, Position, or Color.

Recalling a Preset

Tap a preset tile to apply it. The stored values go straight to the fixtures on stage, which move immediately — the same path any console or the AI would use.

Organizing Presets

  • Categories — presets carry a category (Intensity, Position, Color, or ungrouped); the pool’s filter shows one category at a time, and All shows everything.
  • Rename / Delete / Update from programmer — from a tile’s context menu (right-click or long-press).

Creating Presets

The pool’s New action asks for a name. Creating a preset captures the programmer’s current fixture values — everything you have programmed on the selected fixtures (dimmer, color, position) becomes part of the preset. The Preset Pool and the Color Tool’s save capture the same way, and a preset’s Update from programmer re-captures the current values over the stored ones.

The preset is added to the active filter and can be renamed, updated, and deleted immediately.

Recording Modes — Propagate, Isolated & Backtrack

The Controls window toolbar carries a three-way selector that sets the programmer’s recording mode: Propagate, Isolated, or Backtrack. The active mode is highlighted, and the selection is stored with the programmer state.

The selected mode is recorded with each cue (and the attributes it “moves”, in Propagate mode).

Not yet available: mode-dependent edit behavior. The mode is stored on the cue, but forward-propagating an edit through later cues (Propagate) and Backtrack’s find-and-edit of the originating cue are not yet implemented.

How values carry forward

Cues use soft tracking: a cue stores only the attributes you explicitly programmed, and at playback time, any attribute a cue does not set inherits from the most recent earlier cue in the sequence. That inheritance is what keeps later cues consistent with earlier ones.

Propagate (Default)

Propagate is the default recording mode. Intended: a cue recorded in this mode marks the attribute families it “moves,” so later cues inherit from it until a later cue sets the same attribute itself.

Isolated

Intended: records only the current cue with no forward propagation — a contained change that doesn’t affect other cues.

Backtrack

Intended: a backward-propagating edit tool. Backtrack finds each channel’s “move instruction” — the last cue that explicitly set a value for that channel — and edits that cue instead, which is useful for tracing where a value originates.

Switching Modes

Tap one of the three chips (Propagate / Isolated / Backtrack) in the Controls window toolbar — the programmer surface. The current mode is highlighted there.

Editing Cue Timings

Open a cue from the Sequences window (tap the cue in a sequence’s cue list) to see its details. The Timing card shows the cue’s Fade In, Fade Out, and Wait; unset values show “—”. Tap the edit icon to change them:

FieldMeaning
Fade In (seconds)How long the cue takes to fade in when it is played
Fade Out (seconds)How long the cue takes to fade out
Wait (seconds)Hold after the fade completes, before the sequence advances to the next cue in auto-advance modes
Fade CurveOptional. “easeinout” (or its aliases “smooth”, “smoothstep”, “sine”) applies an ease-in/ease-out shape; anything else — or an empty field — fades linearly

Times are entered in seconds. A field left empty is stored as unset: fades are instant and the cue takes no wait. Saving updates only the timing fields — the cue’s name and attribute values are untouched.

  • Playback Control — How recorded cues run, and soft tracking at playback time

Overlays

Overlays are standalone lighting states independent of cuelists. They can be toggled on and off during playback for layer effects without affecting the main show sequence.

How Overlays Work

An Overlay stores a set of channel values together with a merge mode (HTP or LTP) and an intensity. Unlike cues in a cuelist, overlays don’t have sequencing — they’re simply turned on or off. Multiple overlays can be active simultaneously, with their values merging according to HTP/LTP rules.

Use Cases

  • Add a special effect hue wash on top of a running show
  • Toggle a safety lighting state without stopping playback
  • Create quick-access states for live events (speech, Q&A, applause)

Working with Overlays

  1. Open the Overlays window — each overlay is a card showing its name, merge mode, and intensity slider
  2. New captures the current stage output as a fresh overlay (name it and pick HTP or LTP merging) — program a look first, then capture it
  3. Tap a card to toggle the overlay on/off during playback
  4. Drag the slider to adjust the overlay’s intensity
  5. Delete an overlay from the card’s ⋮ menu
  6. Active overlays merge with cuelist output in real time

Overlay Merging

When multiple overlays are active, their values merge with the running cuelist output. Overlays operate above the cuelist layer, so they always add to (or override) the show without modifying stored cue data.

Snapshot

Snapshot provides a temporary state capture buffer. Capture the current onstage state instantly, make changes, then recall the snapped state. The snapped data is volatile — it exists until you overwrite it or clear it.

The three controls sit in the Playback window’s engine strip (camera icon captures, play/stop toggles recall, clear discards).

Why Snapshot

Snapshot is useful for:

  • Live adjustment — Save the current look, try something new, snap it, compare
  • Quick comparison — Snap state A, make changes, toggle between snapped and live
  • Safety net — Snap before making risky edits

How Snapshot Works

  • Only one snapshot buffer exists at a time. Each new capture overwrites the previous buffer.
  • Capture snapshots the current stage output into the buffer.
  • Recall toggles the buffer on or off. While recalling, the snapshot overrides the live output — it sits above cuelists, intensity masters, flow effects, and overlays.
  • Clear discards the buffer.

Playlists

Playlists group multiple cuelists (sequences) together for coordinated playback. The Playlists window lists all playlists in the show.

Now available: coordinated playback. Advance / Back / Stop apply to every member sequence in the playlist, and the buttons report a live roll-up (e.g. “2/3 active”).

Not yet available: playlist master intensity scaling (the slider is saved per playlist, but members still use their own faders), and Smart Propagate (the ⓘ dialog still reports disabled).

Why Playlists

In complex shows, you may have separate cuelists for different areas or elements:

  • Cuelist 1: Wash fixtures
  • Cuelist 2: Spot fixtures
  • Cuelist 3: Effects

A Playlist groups these cuelists so you can advance them all together, or control them individually within the playlist.

How Playlists Work

  1. Create a playlist with a name and a mode (Synchronized or Independent)
  2. Add member sequences via Edit Sequences — add by sequence ID, remove with the chip’s ✕
  3. Adjust the Master intensity slider (stored per playlist; engine-level scaling is not yet applied)
  4. Play the playlist with ⏭ Advance / ⏮ Back / ⏹ Stop — or play member sequences individually from the Playback window

The info (ⓘ) button opens a Smart Propagate status dialog. Smart Propagate itself is not yet active — the status always reports disabled.

Playlist Modes

ModeBehavior
SynchronizedAdvance starts every member (GO) — all cuelists move together from the playlist. Back steps every running member back one cue. Stop takes every member to black.
IndependentAdvance starts only members that aren’t running — running members keep their own pace. Back/Stop act only on the running members, leaving the rest untouched.

After each operation the buttons report a roll-up of live running members (“2/3 active”); a member still fading out counts as active until it is dark. If any member fails to start, the operation reports the failure (naming the member) rather than advancing the rest silently.

Member sequences can still be played directly from the Playback window; the playlist and the Playback window drive the same playbacks, so a GO from either surface controls the same show state.

Playback Control

The Playback window controls cue execution. Every playback is presented as an executor column — a BACK button, an info screen, a level fader, and PAUSE and GO buttons. Faders provide real-time level control over the cuelist a playback runs.

Playback Controls

ControlFunction
GoAdvance to the next cue in the sequence. If paused, resumes fading from the paused position. If off, starts from the first cue. Go fades the cue at the fader’s current value.
BackStep back one cue, fading over the departing cue’s fade-out time.
PauseToggle that freezes the playback’s active fades exactly where they are (GM3-style: pure crossfade freeze, nothing else). Press it again to resume from the frozen point — Go also resumes. A paused playback is shown as paused in its column, so it is never confused with Off.
FlashMomentarily forces the playback to full level with zero fade (GM3 Flash). If the playback is off, Flash turns it on instantly at full. While flashing, the button is lit and fader moves don’t change the level. Pressing Flash again recalls the override: the level returns to the fader’s position, and a playback that was off when the flash started turns back off.
BlackThe mirror of Flash: momentarily forces the playback to zero level with no fade — an instant, explicit blackout of that one playback. If the playback is off, Black turns it on at zero. Pressing Black again recalls the override (fader level, and a playback that was off turns back off).
GotoJump the playback to a specific cue with that cue’s own timing, from any cue in the list (not just the neighboring one). Open a cue in the sequence’s detail view and choose Goto (running playback) from its menu — the playback running that sequence jumps straight to the cue.
LoadArm a cue as the next Go’s destination (GM3 Load): from a cue’s menu in the sequence detail view, choose Load for next GO. The armed cue’s name appears on the column’s screen; the next Go jumps to the loaded cue and clears the load (a Go with no load advances normally).
FaderControl the playback’s cuelist level (0-100%). Live while the playback is running.

Each column also carries a PREV and OFF row above BACK: Prev steps back to the previous cue, and Off fades the playback to black over the cue’s fade-out time, then resets the sequence to the first cue (a Go during an in-progress off-fade cancels the off). Off never touches the fader — it stays at the operator’s level, so the next Go fades the cue back in at that same level. To bring the level down, use the fader itself (a drag to zero blanks the playback).

Tapping a column’s info screen opens the Configure Playback sheet, where you assign a sequence to the playback (or unassign it) and fire GO/BACK. Cues drive DMX only through a playback: a sequence that is not assigned to a playback does not run.

Reassigning column buttons

Every button on an executor column (Prev, Off, Back, Pause, Go, Flash, Black) can be re-mapped to any of those functions — for example, a column set up for one-finger GO/BACK operation, or a column that trades its Flash for a second Black. A quick tap always performs the button’s current function; to change it, long-press the button (or right-click it) and pick the new function from the list. The assignment is saved per column and survives restarts. Duplicates are allowed — two buttons on one column can do the same thing.

Flash vs Black

Both are momentary level overrides with the same rules (lit while active, fader moves don’t change the level, recall restores the fader level and re-disables a playback that was off): Flash forces the level to full — a momentary brightening of the running cue; Black forces it to zero — a momentary blackout of the running cue. Flash is what you hit to make a cue appear at full instantly; Black is the quick kill that still remembers everything (a Go while blacked resumes at the fader’s level, not from scratch).

Pause vs Off

  • Pause is a non-destructive toggle: it freezes the current fades where they are, and pressing it again (or Go) resumes from the interrupted point. The column shows the paused state while it is frozen.
  • Off is a hard reset: it fades the playback’s output to black and returns the sequence to its initial position, effectively removing that playback from contributing to the stage.

Shared Sequences (Windows)

More than one playback can be assigned to the same sequence. A sequence runs as a single playback: the first playback that is GO’d owns it, and every other playback on that sequence becomes a window into the same show. All windows stay in perfect sync — the same cue, the same position, the same level at all times.

Each window is a full transport: GO, BACK, and OFF from any window drive the shared sequence for everyone. This is handy when one column is set up for simple GO/BACK/OFF operation and another is reserved for extra buttons (pause, blackout, and similar) — both control the same running sequence.

Windows show the shared position and level but do not get their own fader; they mirror the level of the fader that owns the sequence. Removing the owning playback (or re-assigning it to a different sequence) stops the sequence and clears all of its windows.

Faders

Faders are allocated per playback: when a playback is GO’d it receives its own fader, and the slot is recycled when the playback releases it. There is no fixed 10-fader bank and no user-configurable pages — faders grow on demand as more playbacks run.

The fader owns the level: no gesture (Go, release, or drag) ever moves the fader to 100%. Fresh fader slots rest at 100%, and Go fades the cue at the fader’s current value. Faders scale dimmer (intensity) channels only — pan, tilt, and color are never touched.

Fader-bank pages — and faders for other targets (intensity masters, overlays, flow effects, grand master, playlists) — are not yet available.

Below the grid, a strip holds the grand master fader, blackout, and snapshot controls, all live: the GM fader scales the dimmer channels (0-100%), the blackout button forces every channel to zero, and riding the fader back up out of blackout clears it. Both apply to the final output.

Crossfader

Not yet available. The crossfader is on the way (position, left/right targets, and a curve: linear, equal power, or custom), but it is not yet rendered in the Playback window.

Intensity Masters

Intensity Masters provide overlay level control over fixtures. Masters are created by name in the Intensity Masters window; each is shown as a card with a mode selector and Level, Emphasis, and Dim sliders.

How Intensity Masters Work

Each master multiplies the dimmer (intensity) channels of the fixtures assigned to it. Unlike playback faders that control entire cuelists, masters cut or shape output without stopping playback. Pan, tilt, and color channels are never touched.

A master’s effective multiplier is its Level (0-100%) — replaced by its Emphasis value when Emphasis is set above 1.0x, or by its Dim value when Dim is set below 1.0x — clamped to 0-2x. New masters default to HTP mode at Level 100%, Emphasis 1.0x, Dim 1.0x.

Each master card has a Fixtures row: tap it to open a checkbox picker over every patched fixture and assign (or unassign) the master’s targets. A master with no fixtures assigned affects nothing, so assign before relying on it.

Master Modes

ModeBehavior
HTP (Highest Takes Precedence)The highest master value wins for each channel
LTP (Last Takes Precedence)The last master in the list wins for each channel
OverridePin the channel to this master’s level; beats HTP/LTP
FreezePin the channel to this master’s level (currently behaves the same as Override; a true hold-at-captured-value is a follow-up feature)
BumpA deliberate transient punch: the channel is set to Level x Emphasis (clamped 0-2x). Applied last — beats pin

Per-Master Controls

ControlFunction
LevelSlider, 0-100% — the master’s base multiplier
EmphasisSlider, 1.0-2.0x — takes over as the multiplier while above 1.0
DimSlider, 0.0-1.0x — takes over as the multiplier while below 1.0
ModeSelector to switch a master between HTP / LTP / Override / Freeze / Bump
FixturesTap to open a multi-select picker over the patched fixtures

Bump, Override, and Freeze are modes a master is set to — not momentary buttons. Momentary bump/release buttons, Spread, and manual override are not yet available.

Emphasis & Dim

Emphasis and Dim provide runtime fixture boost or reduction. They are per-master controls on each intensity master, set in the Intensity Masters window, and apply on top of running playback output without stopping it.

Emphasis

Emphasis increases the effective multiplier of a master up to 2.0x (slider 1.0-2.0x). While Emphasis is above 1.0 it replaces the master’s Level as the multiplier — the fixtures assigned to the master stand out from the rest of the show.

Dim

Dim decreases the effective multiplier of a master down to 0x (slider 0.0-1.0x). While Dim is below 1.0 it replaces the master’s Level as the multiplier — the fixtures assigned to the master recede without being turned off (unless Dim is at 0).

How It Works

  1. Create an intensity master (and assign fixtures to it — see Intensity Masters)
  2. Move its Emphasis or Dim slider
  3. The engine applies the multiplier on top of running cuelist output — dimmer channels only
  4. Return Emphasis to 1.0 / Dim to 1.0 to restore the master’s Level

In Bump mode, a channel is punched to Level x Emphasis instead — see Intensity Masters for the mode semantics.

Not yet available: applying Emphasis/Dim directly to a selection of fixtures, and assigning fixtures to a master from the window.

Stage Map

Stage Maps are 2D graphical floor-plan views of the stage. Fixtures and other elements are placed on the map and can be selected by clicking or dragging. Fixture elements show aim indicators that reflect the programmer’s pan/tilt.

What Stage Maps Do

  • Visual fixture placement — Arrange fixtures in a 2D floor plan matching the stage layout (create a map with New Map, then add fixture elements with a fixture picker and X/Y position)
  • Selection — Click a fixture, shift-click to add or remove one, or drag a rectangle to select a group. Selection is synced with the programmer, so the map doubles as a selection surface for the Controls window
  • Aim indicators — Fixture elements draw their pan/tilt from the programmer’s state; the aim direction can be flipped per element
  • Live feedbackNot yet available: fixtures will change color to reflect their live output
  • Spatial value setsNot yet available: applying value sets based on position

Working with Stage Maps

  1. Open the Stage Map window and create a map with New Map
  2. Add elements with the + button: fixtures (fixture picker + X/Y position), labels, or zones
  3. Pan (right-drag) and zoom (toolbar) to match the stage layout; toggle the background grid from the toolbar
  4. Select fixtures by clicking, shift-clicking, or dragging — selection follows the programmer
  5. Program the selected fixtures in the Controls window

Elements cannot yet be moved or removed from the canvas — placement is set when the element is created.

Map Elements

ElementDescription
FixturesPlaced objects representing lighting instruments
LabelsText labels for areas, zones, or notes
ZonesRectangular or polygonal selection areas
GridOptional background grid for alignment (toolbar toggle)
  • Param Groups — Aim group parameters used by the aim indicator
  • Data Views — The Stage Map window and its siblings

Groups & Profiles

Groups and Abstraction Profiles organize fixtures for selection and programming. Abstraction Profiles are not built yet — see the note below the Groups section.

Groups

Groups are named collections of fixtures. Create groups to select related fixtures quickly: “Wash Front”, “Spots Center”, “All Moving Heads.” Groups are managed in the Groups window. Each group shows as a card with its name, its resolved fixture count, and a “Dynamic” badge where applicable.

What works today:

  • Create — the New Group dialog creates a static group from its name
  • Delete — from a group card’s overflow menu
  • Dynamic groups — the dialog collects filter criteria (profile name, manufacturer, address range, LACS category) and they are persisted and applied: a patched fixture joins the group when its profile name or manufacturer contains the substring, its address falls inside the range, and (if set) any of its channels belongs to the chosen LACS category. Empty criteria match everything. A group’s resolved fixtures are its dynamic matches plus any fixtures in its static list. Hovering the “Dynamic” badge shows the criteria in words.

Not yet available:

  • Capturing the current programmer selection when saving a group — created groups do not contain fixtures yet
  • Adding or editing a group’s fixture list
  • Renaming a group or selecting a group from its card
  • Generating groups from stage maps or saved criteria

Abstraction Profiles

Not yet available. PRISM has no abstraction profile layer: programming targets fixture attributes directly (the dimmer, color, gobo/shape, and position tabs in the Controls window). The only “profiles” in the system are fixture models (manufacturer/model definitions used when patching) — not a programming abstraction.

Profile Sets

Not yet available. There is no multi-wheel profile-set concept in the system today.

Windows & Layouts

On a wide (desktop) screen, PRISM is a multi-window workspace: a freeform canvas of windows you can open, move, resize, and arrange. The same views adapt down to a single-screen drawer on phone-narrow windows.

The Top Bar

  • Add Window — opens a list of every available window, grouped by category (Programming, Playback, Stage, Library, Monitor, Setup). Pick one and it appears on the canvas at its default size.
  • Help — a menu with two items:
    • Open Manual — the bundled user manual, offline.
    • Send Feedback… — describes a problem and uploads it with the server log attached. If the upload fails (venue networks often block it), a readable copy is saved locally and the app tells you where.
  • Status indicator — live connection state to the server: Connected / Reconnecting / Disconnected.

Windows on the canvas can be dragged to move, resized by their edges, maximized, closed, and clicked to bring to the front. The full list of window types is described in Data Views.

Named Layouts

Above the toolbar is a row of layout tabs — one per saved layout.

  • Create — the + button at the right of the tab row asks for a name (for example “Concert Setup”) and creates a new empty layout.
  • Switch — tap a tab to load that layout; the canvas switches to its saved windows, positions, sizes, and maximize states.
  • Rename / Delete — the small menu on each tab.

Changes to the window arrangement save automatically (a half-second after your last move or resize) into the layout that is active. Layouts are stored on the server per show, so every console that joins the show sees the same layouts. On startup the most recent layout loads; if no layouts exist, PRISM creates a default “Untitled” layout with a single Controls window.

Phone-Narrow Mode

When the app window is narrower than about 600 px (phones, small tablets), the freeform canvas is replaced by a single-screen shell: one full-screen view at a time, with a hamburger drawer listing the same window set. Your last screen choice is remembered when you switch back and forth.

Not yet available: layouts save which windows are open and where they sit; per-window options such as column visibility are not yet part of a layout.

Data Views

Show data lives in dedicated list and grid windows. Each type of data has its own window, and the data stays live: changes made anywhere (another console, the AI) appear without reloading.

Data View Windows

WindowContents
SequencesAll sequences (cuelists) with cue counts; open one to record, duplicate, delete, and drag-reorder its cues
Value SetsAll value sets
Preset PoolAll fixture presets as pool tiles, filterable by attribute group; tap a tile to apply it
GroupsFixture groups, static and dynamic
Flow EffectsFlow effects and their steps
OverlaysOverlays with active/inactive state
PlaylistsPlaylists and their member sequences
Fixture SheetThe full patch: fixtures, channels, and values
PatchAdd and remove patched fixtures (Setup category)
Show FilesExport and import .prism show files, load one from disk, and start a New Show — see Remote Access & Show File Portability (Setup category)
Live ViewLive per-fixture state from the engine
DMX ViewLive DMX channel monitor

Data View Features

  • Live data — views stay current: they refresh the moment the show changes, anywhere it was made.
  • Create and delete — each view offers its own create and delete actions.
  • Drag-to-reorder — reorder cues within a sequence by dragging.
  • Context actions — cue views offer record, duplicate, and delete; playback assignment for sequences.

Configurable columns, row color-coding, and swipe actions are not available in the current release.

Color Tool

The Color Tool — on the Color tab of the Controls window — provides integrated color mixing with multiple color modes and real-time preview.

Colors apply to the fixtures currently selected in the programmer. The tool reads each selected fixture’s patch profile to map your color onto its real RGB channels; fixtures without RGB channels (e.g. a color wheel) are shown as unmappable rather than guessed.

Color Modes

ModeUse Case
CIEPrecise color selection on a 2D chromaticity diagram
RGBAdditive color mixing (LED fixtures)
CMYSubtractive color mixing (color scrollers)
HSIHue, Saturation, Intensity for intuitive color selection

Features

  • Real-time preview — See the selected color applied to fixtures as you adjust
  • Mode conversion — Switch between modes with automatic value conversion
  • Color library — Save and recall favorite colors
  • Fixture-aware — Shows available color range based on selected fixtures’ capabilities

Multi-User Sessions

Multiple consoles can work on the same show at once. Each connected console is a station; stations form a session with one master. The Station window is where sessions are managed.

How It Works

  1. One console becomes the session master (Station window → Become Master).
  2. Other consoles join the session (Station window → Join as Standby, entering the master’s address). On join, the member’s own show is auto-saved, and the member’s show data is replaced by the master’s show so everyone starts from the same state.
  3. The master controls who can write. Members join read-only by default; the master grants or revokes write access per member from the session roster.
  4. Failover: a standby keeps the master’s live output ready to send. If the master goes silent, the standby can take over output so the show does not drop.

Station States

StateMeaning
StandaloneNot part of any session; runs the local show only
Idle MasterPointed at a session; promotes automatically if the master is lost
Global MasterThe authoritative session master
Session MasterOwns session creation and coordination
ReplayJoined the session; runs local DMX for its own universes

What Members See

  • The session roster: every station in the session with its state.
  • Live membership and liveness updates from the master.
  • The shared show data (synced from the master on join).

Per-user workspaces, view-only user roles, and per-user fixture restrictions are not available in the current release — access control is per-station (read-only or write), granted by the master.

Remote Access & Show File Portability

PRISM assumes your lighting console is connected to a network. Clients on that network connect to it automatically; for completely offline consoles, PRISM supports full show file export and import.

Network Access

Today, clients must be on a network that can reach the server:

  • Same machine — the app on the server’s own machine connects automatically, with no pairing.
  • Same LAN — enter the server’s address in the Connectivity window and complete pairing (a short code, approved on the primary console).

To reach a console across networks, use your own VPN or tunnel to put both sides on one network.

Not Yet Available

  • mDNS/Bonjour auto-discovery on the same LAN.
  • Cloud discovery — the console registering itself so remote clients can find it without configuration.
  • Relay fallback — automatic traffic routing for NAT/firewall situations.

Show File Export and Import

For situations where the lighting console must be completely isolated from any network, the Show Files window exports and imports complete show files:

  1. Export: name the export in the Show Files window. The entire show — fixtures, sequences, cues, groups, playbacks, and settings — is written to a single file. Export progress is shown while it runs.
  2. Transfer: move the file to your isolated console (USB drive or local file transfer).
  3. Import: import the file on the offline console. Importing completely replaces the current show; before the replacement, a snapshot of the previous show is saved automatically — import that snapshot to restore the old state.

New Show

To start over on a console whose current show is stale or broken, the Show Files window has a New Show button (top bar). It:

  1. Asks for confirmation and offers a name (“Save current show as”) — the operation replaces the entire current show with an empty one.
  2. Saves a snapshot of the current show first — under the given name (e.g. My Wedding.prism), or pre-newshow-…prism when left blank — in the export list. If that snapshot cannot be written, the show is left untouched and the operation fails.
  3. Replaces the live show with an empty one. No restart needed.

To restore the previous state, import the snapshot from the list — the same import flow as any show file. Typical workflow: import an old, completed show, then New Show with the old show’s name — the finished work is saved as a named .prism and the console starts clean.

Load a Show File from Disk

The Show Files window has a Load button (top bar, folder icon) for show files that live anywhere on the console machine — not just in the server’s export list:

  1. Pick a .prism file with the system file picker (any location).
  2. Confirm — the operation replaces the current show, exactly like an import. A pre-wipe autosave snapshot is taken first.
  3. The file is uploaded and kept in the Show Files list under its file name, so it can be re-imported later without re-uploading (uploading the same name again updates that entry). The show is loaded with the same protections as an import: if the file is incompatible or anything fails, your current show is left untouched (the uploaded file remains in the list and can be deleted from there).

This is the intended “bring a show file over on a USB stick” path: copy the file to the machine and Load it.

Limitations

  • Cross-network access requires your own VPN/tunnel until cloud discovery and relay support land.
  • Importing a show file completely overwrites the current show (the automatic snapshot is the restore path).
  • Loaded files are kept in the Show Files list — delete them from there if you don’t want to keep them.

AI Integration & Assistant Control

PRISM’s AI assistant lives in the AI Assistant window: a chat interface where you talk to your show through a language model of your choice. The model can read your show — patch, groups, sequences, cues, playbacks — and propose controlled actions on it. Every write happens only when you approve it.

Setting Up the Assistant

  1. Open the AI Assistant window.
  2. Open the settings sheet and enter:
    • Endpoint — any OpenAI-compatible base URL: OpenAI, OpenRouter, Ollama, or another local model server.
    • API key / token for that endpoint.
    • Model name.
    • Kill switch — must be on for any AI write (see below).
  3. Settings are saved for the whole console, not per device.

How Chat Works

  • Reads are instant. When the assistant inspects the patch, groups, sequences, cues, or playbacks, the result appears in the chat — nothing to approve.
  • Writes are cards. When the assistant wants to change anything — set fixture values, patch a fixture, create a sequence or playback, save a cue, send a transport command — it surfaces an apply card describing the action. You Approve or Reject each one. No write executes without your tap.

Examples of things you can ask:

  • “Set the downstage wash fixtures to red.”
  • “Add a new par can to the patch and group it with the other wash fixtures.”
  • “Save the current programmer state as a new cue at the end of the main sequence with a 5-second fade, and put the sequence on playback 2.”
  • “Which cues in the intro sequence use high intensity?”
  • “Send GO on playback 1.”

Safety

Two independent gates sit between the model and your rig:

  • Kill switch. Off, and every AI write is refused (the refusal is logged). On, writes are still individual apply cards — the kill switch is a master gate, not a bypass of approval.
  • Per-action approval. Every write is an explicit Approve/Reject decision, so the operator always sees exactly what the model proposes before it happens.

Every AI tool call — arguments and result — is recorded in an audit log, viewable in the AI Assistant window.

The assistant can also read the PRISM user manual that ships inside the application (the same manual the Help button opens), so it can answer questions like “how does Flash work?” without an internet connection.

Using Your Own Model Client (aside)

The assistant’s tool backend speaks the standard Model Context Protocol (MCP), so other local MCP clients — Claude Desktop, for example — can use the same tools on your show, subject to the same kill switch and audit log. External clients cannot use the apply-card approval flow, so use the kill switch deliberately when connecting external models.

Per-AI fixture restrictions and destructive-operation blacklists are not available in the current release.