◀ Crowd Light ShowOpen console GitHub

VJ & OSC guide

Drive the crowd's phones by hand, or from the professional software you already run — Resolume, TouchOSC, Bitfocus Companion, or any OSC source. Optional WebMIDI maps a hardware fader/pad box.

1 · The VJ pult (nothing to install)

Open the console at /studio (or /operator for the main show), press Start, then open “🎛️ VJ pult” and switch Manual control on. You get four touch layouts — Faders, Colour wheel, XY pad, and Big pads — plus a fullscreen button. Toggle “intervene in preset” (the running preset keeps going and your moves ride on top) or “manual only” (presets off, the colour is purely yours). The Palette section locks the whole crowd to a flag's or a brand's colours — pick them on the wheel or tap a flag.

Everything is safety-clamped on every phone: at most 3 flashes per second, no red strobe — you can't push it past that no matter how hard you ride the faders.

2 · Drive it from Resolume / TouchOSC / Companion (OSC)

A tiny bridge runs on your own laptop. It listens for OSC over UDP and forwards each message to the show over HTTPS — so nothing new is opened on the show server, and it works through NAT and TLS. It's zero-dependency Node; the source is in tools/vj-bridge/.

Run the bridge

Grab your room's token from /studio (it's window.__SESSION__.token in the page), then:

node tools/vj-bridge/bridge.mjs \
  --api https://lightshow.flyreelstudio.eu \
  --token "$CLS_CONSOLE_TOKEN" \
  --osc-port 9000 --osc-host 0.0.0.0

For the main show instead of a /studio room, pass --operator-pass "$OP_PASS" in place of --token.

Point your software at it

OSC address map (/cls/*)

AddressArgsEffect
/cls/manual/huef 0..1colour (×360), auto-enables manual
/cls/manual/satf 0..1saturation
/cls/manual/brif 0..1brightness
/cls/manual/flashf 0..1flash (torch) intensity
/cls/manual/onf ≥0.5enable / disable the manual layer
/cls/manual/modesintervene or full
/cls/palettesrestrict to colours, e.g. "e30613,ffffff"
/cls/presetspulse, rainbow_chase, color_waves, ocean, off
/cls/torchsbeat, strobe, sparkle, off
/cls/fxs / buttonfirework: salute, twinkle, ripple, strobe_burst, color_burst
/cls/blackoutblackout (lights only; music keeps playing)
/cls/seekf msjump the music + lights
/cls/mutef ≥0.5mute the music on every phone
/cls/marqueesscrolling text on every phone

It stays safe. Every command is re-validated and re-governed on the server and is scoped to your own room by a signed token — even hostile OSC can't exceed the epilepsy-safety limits or drive another show.

3 · WebMIDI (a hardware controller)

On the laptop running the console, plug in a USB MIDI fader/pad box (Korg nanoKONTROL, Akai APCmini, …). In the pult's MIDI controller panel press Connect, then Learn a fader for each value — wiggle the control to bind it. Faders map to the four values; note pads fire the flash. Chrome or Edge on desktop only; the mapping is remembered.

4 · Self-host it

The whole app is open source (Apache-2.0). Run it yourself with Docker and drive it exactly the same way — see the repository and the bridge README.