-
perf(audio): the rig was reading samples off disk while playing · 077e1db1
Went looking for latency to shave in the PipeWire quantum. The quantum was not the problem. preload.scd did not exist on this box. start_and_midi.scd:259 tests for it with File.exists and silently takes the other branch -- 'no preload.scd, lazy-loading samples on demand.' Driving rose_rouge headlessly for three minutes logged 46 'reading soundfile as needed' lines, one every 5-12s, each a disk read landing on the audio thread; the SuperCollider node's pw-top W/Q hit 1.300 at the stock 1024 and 1.390 at 512, i.e. missing its deadline regardless of buffer size. check-preload.sh named it exactly: '60 bank(s) would be read from DISK on first play (crackle, mid-transition)' -- the same sentence its own header attributes to a crackle that debuted at a venue. Generated with check-preload.sh --fix (60 banks, 16 tracks) and verified at the next boot: 'PRELOAD: 60/61 banks OK in 2.6 s'. The mechanism was never broken; gig-up.sh already regenerates the plan and the checker already exits non-zero. gig-up.sh had simply never been run on this box. Re-running the identical load after the fix left 29 lazy reads, ALL of them the rose bank -- because rose_rouge is not in setlist_opal2026.txt. Zero of the 60 preloaded banks lazy-loaded, so the plan works; it warms the OPAL set while the track this box actually plays sits outside it. Logged, with two more findings from the same boot: preload's own COUNT MISMATCH banner firing on a sixty-second-old plan, and three global mi-UGens FX synthdefs failing to load at every boot while rig-doctor's mi-ugens check stays green. Adds tools/latency-lens.py, which implements the documented quantum method (lowest quantum holding zero xrun delta and max W/Q under 0.75) against pw-top, sets clock.force-quantum at runtime and restores it, and never edits a config. It refuses to run unless the default sink is muted and re-checks that every second for the whole run: a valid quantum test needs the real hardware device driving the graph but does not need the speakers.
PLN (Algolia) authored077e1db1
×