Per-LED wave physics · festival scale
Propagate simulates genuine wave propagation for every LED from its true 3D position — no textures, no sampling. Built for installations from a hundred thousand to a million points of light.
The approach
Texture-first platforms — MADRIX, grandMA3, Depence, QLC+, Resolume — render a 2D or 3D frame and sample a color for each LED coordinate. Propagate never draws a frame. It expands a wave from an activator through physical space and asks each LED what it should be, based on how far the wavefront has travelled and where that LED sits in its envelope.
Render → sample
A texture is generated, then LED positions look up whatever color happens to land under them. Spatial motion is an illusion of the source image — the fixtures never actually know where they are.
Propagate
A wave propagates from an activator at a real speed. Each LED resolves its own color from its 3D distance to the wavefront and its point in an ADSR envelope. The motion is physical, not painted.
How a wave becomes light
The engine is server-authoritative and distributed. A single trigger fans out to every worker node, and each node solves only the LEDs it owns — the workload is embarrassingly parallel by design.
A trigger point emits a wave with a type and an ADSR envelope shaping its rise and fall over time.
Sphere · Plane · Bidirectional · InstantThe Manager broadcasts the activator event to every worker node at once — no per-node render state to sync.
Manager → nodesA node computes wave influence only for its assigned subset, from real 3D distances via a spatial index.
Parallel.For · SoAResolved per-LED color is pushed to fixtures over the wire, serpentine-mapped and universe-addressed.
Art-Net · sACN · DMXTwo parts, one system
Engine
The authoritative C# engine. It runs the wave simulation, owns every ID, and pushes lighting data to the physical rig. Nothing is applied client-side first — results always come back through the stream.
Editor
A Unity / URP front-end where you place fixtures in 3D, manage sessions, and watch the simulation live. It draws the room — the engine decides the truth.
The building blocks
Dimensions
The 3D venues waves live and travel inside.
Sessions
Independent shows — several can run per cluster at once.
Controllers
The hardware endpoints that drive real fixtures.
Universes
Globally-unique DMX universes, allocated by the engine.
Strips & Panels
Addressable LED runs and matrices with serpentine mapping.
Activators
Trigger points that launch waves into the space.
ADSR Envelopes
Attack, decay, sustain, release — how each hit lives and dies.
Spatial Index
Range queries that make per-LED distance solving fast.
Serpentine Map
Physical wiring order, resolved server-side for consistency.
Speaks your rig's language
Universe IDs are globally unique across the venue for correct multicast addressing, and every ID is assigned by the engine — never the client.
See it in motion
Walkthroughs and captured installs are on the way. This is where they'll live.
Get in touch
Tell us about the rig — the fixture count, the protocols, the room. We'll show you what per-LED physics looks like on it.