← Lumen

The Mirror · Perform mode

One performance.
Two countries. One clock.

A full production runs on the main stage. A second, complete production runs in another country — firing the same show, the same instant, locked frame-for-frame. This is how the mirror actually works, and why it's reliable over the open internet.

The core idea: don't stream the show — schedule it.

Most people imagine "remote control": push the lighting signal across the ocean and fire it the moment it lands. That fails — the public internet is fast but never perfectly steady, so the far end would stutter. We do the opposite. We send each moment's intention ahead of time, stamped with exactly when it should happen, and let the far side fire it locally, on a shared clock.

What actually travels across the wire

Not light. Not video frames. Not a control stream. Just small, time-stamped instructions:

{ at: 00:03:21:10 · look: "blood-red-tight" · transition: collapse 2s }

Because we send the intention rather than the raw signal, the messages are tiny, they're easy to deliver well ahead of their deadline, and the far-side rig doesn't even have to be identical — it reproduces the same look with whatever fixtures it has.

tiny messagestime-stampedrig-agnosticno DMX over the internet

The signal flow

Master · Main Stage

Country A

  • Show runs to its timecode (the heartbeat)
  • Each cue published as a time-stamped event
  • Console output / input only — no remote programming surface
Mirror · Remote

Country B

  • Clock slaved to the master, held a few seconds behind
  • Buffers incoming events until their moment
  • Fires its own rig locally, on time

The link carries scheduled intent + the master clock. That's it. The mirror does the firing itself.

Why the deliberate head start is the whole trick

The mirror runs a few seconds behind the real stage — on purpose. That buffer is what turns an unreliable connection into a flawless one:

MAIN STAGE
DELAY WINDOW
MIRROR (ABROAD)

The shaded window is the head start. Every instruction must only arrive somewhere inside it — not fast, not smooth, just before the deadline. Then both pips fire in lock-step.

  1. One master clock. The main stage's timecode is the single shared heartbeat. Everything references "show time," never "now."
  2. A fixed broadcast delay. The mirror runs (e.g.) 3 seconds behind, always, by design.
  3. Events carry a fire-at time. Each cue is "do this at 00:03:21:10," which is in the mirror's near future.
  4. It arrives early and waits. The mirror buffers the event the instant it lands.
  5. It fires locally, on the beat. When the mirror's clock hits the timestamp, it drives its own rig — frame-accurate, because the trigger is local.

Everything stays together — lights, video, effects

Because every subsystem schedules against the same clock with the same offset, they re-cohere at the mirror. A drop where the kick, the strobe, the video cut and the CO₂ all hit as one — hits as one at the mirror too, no matter which message arrived first or with what jitter. The buffer recombines them.

💡 lighting📹 video🔥 pyro💨 SFX🔊 audio accentsall on one clock

When the network misbehaves — graceful by design

If a message is late or dropped, the mirror never freezes and never jumps. Each cue carries its own instruction for what to do if it misses the deadline:

PolicyBehaviour if lateUsed for
fire-lateFire as soon as it arrivesA colour change — better late than never
holdKeep the previous stateSafe default — no visible glitch
skipDrop it entirelyA missed strobe stutter; forced for safety-critical cues like pyro

On reconnect, the mirror re-syncs its clock gently — correcting drift a frame at a time so the audience never sees a jump.

Perform mode is a pipe, not a console

✓ Why nothing can go wrong on stage

The mirror has no interface to change programming in real time. It only plays what was already authored, via console output and input. There are no live buttons to fat-finger, no way to accidentally re-program a running show. All creativity happens earlier, in Author mode — a completely separate, offline tool that can never touch a live rig. You create there; you broadcast here.

⚠ The honest hard part

The lighting mirroring is the easy 80%. The genuine engineering risk is the master-clock synchronization across countries — keeping the mirror's clock disciplined to the real one without jumps. It's a solved problem in broadcast, but it's the piece we design first, not last.

The show is authored once, as intention. Then it can be re-performed anywhere — every rig firing locally, all locked to one clock — as if the distance was never there.

Mirror / Perform-mode function brief. v19.72 · schedule, don't stream