simpleVIS
See your lighting programming, before the room

What it does
simpleVIS imports an MVR and renders the rig it describes, driven by whatever DMX you point at it. The import is the part that matters: an MVR carries fixture placement and patch, and the GDTF files inside carry the geometry tree, the DMX modes and the beam data. Reading both is what lets an unfamiliar fixture articulate correctly without anyone teaching the software what it is — pan turns whatever the file says pans.
Beams are raymarched through a haze volume rather than drawn as cones, so they read as light in air: they stop where they land, they stack where they cross, and a narrow spot looks different from a wash because the beam and field angles come from the fixture's own published photometry.
The desktop build owns the network and serial ports; the browser demo is the same application without them, and that is the whole of the difference between the two. It is a demo rather than a hosted edition because nothing can ever drive it: Art-Net and sACN are UDP, a browser has no way to receive UDP at all, and no browser release changes that. So what it flies you round is an MVR you drop in, lit by the built-in look. It also builds for iOS and Android, though neither is published: those shells take unicast Art-Net and sACN, while multicast sACN, CITP discovery and USB DMX cannot work there and are not offered.
- MVR import with embedded GDTF: geometry tree, DMX modes, beam angles, colour mixing
- GeometryReference expansion, so pixel-mapped walls address one DMX slot per pixel
- Volumetric haze beams, instanced — the whole rig in one draw call
- sACN with priority arbitration, CID source identity and per-universe multicast joins
- Art-Net 4 with ArtPoll replies, so consoles list simpleVIS as a node
- CITP: peer discovery, levels over SDMX, and fixture patch from the desk over FPTC
- USB DMX input via an Enttec DMX USB Pro
- Two-source HTP/LTP merge with a 4-second timeout; a third source is refused and reported
- Built-in demo look, so the rig can be seen with nothing plugged in
- Video on LED walls — a file or a captured screen, sampled per pixel onto the wall's own pixel-map raster; the fixture's dimmer still gates it
- A Quality panel — wireframe only for a crowded rig or a slow machine, and one Detail slider whose midpoint is exactly the default tuning
Where it stands
Released at v0.4.1, which plays video on the LED walls an MVR already describes — a local file or a captured screen or window, sampled per pixel onto the wall's own raster, in the hosted build as well as the desktop one — and adds a Quality panel with a wireframe-only mode and one Detail slider over the things that decide the cost of a frame. NDI, Syphon and Spout feeds are not implemented. Runs the full 119-fixture MA Demostage at 60–70 fps, and the Art-Net, sACN and CITP receive paths are all verified over real sockets. v0.2.0 adds CITP — peer discovery over PINF, levels over SDMX, and fixture patch from the desk over FPTC — and it has talked to a real peer, Capture 2026, which parses and connects correctly. But Capture identifies as a visualiser, so it is a DMX consumer like simpleVIS and sends neither levels nor patch: SDMX levels and FPTC patch from a real console remain unverified. No lighting console, and no DMX interface, has ever driven any of this — every packet so far came from a test that wrote it. MSEX and CAEX — thumbnails, and streaming the viewport back to the desk — are not implemented.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead