feat(monitor): headphones mode — every orbit in your ears, no Ardour
The rig is multichannel by design: orbit k is the pair (out_{2k-1}, out_{2k}),
wired to its own Ardour track at a gig. Away from the stage that design means
d1 is the only orbit that can reach a sink — and on a freshly booted laptop
(2026-09-07) not even that: scsynth had NO links to any sink, so the whole box
was silent with every check green.
- tools/fold-orbits.py: fold all orbit pairs onto one stereo sink, summed at
unity. Idempotent, and it VERIFIES — pw-link exits 0 for "File exists" and
for a port that vanished mid-call, so its exit status proves nothing. The
channel count is discovered from the graph (28 today, 12 in an older
comment, 2 on stock SuperDirt), never assumed. Refuses while Ardour runs,
which owns the mix and prunes SC->hardware links every 2 s.
- gig-up.sh --headphones: SuperDirt -> fold -> Pulsar. No Ardour, no fader
restore; the fold becomes the readiness gate, because it IS the whole
monitoring path.
- gig-preflight: `monitor path` check — stage (Ardour receiving on N tracks)
or headphones (fold present), and it asks fold-orbits rather than
re-deriving the port math.
- 18 tests, fixtures captured from the real graph: `pw-link -lo` marks links
by INDENTATION only, so a grep of it fabricates relationships, and a source
port printed with no indented child is the exact state this tool fixes.
Measured, not assumed: 14/14 orbits arrive at the sink (bd swept d1-d14, peak
per orbit), and the links survive 32 s of autoroute reconciling.
Showing
tools/fold-orbits.py
0 → 100755
tools/tests/test_fold_orbits.py
0 → 100644
Please
register
or
sign in
to comment