Rig-gated - the studio-facing surface
Two things no gate in this repository can see: a real controller and a real show. Extracted
from Plan 0158 at that plan’s close (2026-09-10) so the plan could close on its six completed
dev phases without waiting on a projector session, exactly as every item above was.
Nothing in CI sends a datagram from another program - the suite’s loopback test is the player talking to itself - and nothing in CI watches a projector for ten minutes. The frame-time figures Plan 0158 Phase 6 recorded are a debug build on one machine over ~7 s, which is a shape rather than a reading; the number this item exists to produce is the release one, at the projector.
- Drive the player from a real OSC sender. From TouchDesigner, or any sender on the same
machine, run
ritmolux --control 127.0.0.1:9000 --eventsagainst a playing preset. Confirmctl/parammoves a parameter andctl/presetswitches the preset, and thathealth’s counters acknowledge it -ctl_rejectedstaying flat is the half that says the sender and the decoder agree on the wire, not merely that something happened. The vocabulary is in the studio control protocol spec; the flags are in Configuration. (Plan 0158 Phase 7, extracted at that plan’s close 2026-09-10.) - Read the preview’s real cost on the projector. A windowed player on the projector with
--preview stdoutpiped to a file, playing a track for ten minutes. Confirm the preview frames are visibly the show, then record the release-buildframe_msp50 and p99 from the preview line with the readback on and off here. The debug-build pair to beat isp50 37.18 / p99 76.44on andp50 30.72 / p99 76.24off - ~6.5 ms at the median and nothing at the p99, on a build whose show already ran at 30 fps. A run that delivers zero frames is not a reading: the frame count on the exit line is ADR-0172’s witness that the readback actually ran. (Plan 0158 Phase 7, extracted at that plan’s close 2026-09-10.)
Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.