From eaa578421f00c6be0e72eef815acac23cc844d51 Mon Sep 17 00:00:00 2001 From: sylph-decoder Date: Sat, 29 Aug 2026 16:51:14 +0000 Subject: [PATCH] notes: point the container page at the working audio-capture route The entry already warned that run-canary is silent twice over, but stopped there -- and fixing only the mutes still yields an unfaithful capture, because a PulseAudio null sink s monitor is wall-clocked and invents silence when the client is late. Adds the pointer to the ALSA file-tee page, with the two things a reader needs before starting: the slave must pace or the tee free-runs at about 250x real time, and a size guard is not optional. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01QsEPXWVaEpyfudtR6re1Pd --- docs/agents/CONTAINER-NOTES.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/agents/CONTAINER-NOTES.md b/docs/agents/CONTAINER-NOTES.md index daf441f3..583dddd7 100644 --- a/docs/agents/CONTAINER-NOTES.md +++ b/docs/agents/CONTAINER-NOTES.md @@ -76,6 +76,17 @@ python3 tools/re-capture/gmem.py find hex:820af844 400 and will silently resample a 6-channel monitor: `parec -d cap.monitor --channels=6 --rate=48000 --format=s16le`. + 🔴 **And even with both mutes off, a PulseAudio-monitor capture is not + faithful — use the ALSA tee instead.** A null sink's *monitor* is sampled on a + wall clock and **invents silence** whenever the client is late, so a capture + through it is 39 % holes that the game never emitted. `PULSE_LATENCY_MSEC` + only trades gap count against gap size and never wins. + ✅ **The working route is `--apu=alsa` with an ALSA `file` tee in front of a + paced slave** — full recipe, controls and three configuration traps in + [`audio-capture-alsa-file-tee.md`](../re/audio-capture-alsa-file-tee.md). + ⚠️ A *bare* file tee free-runs at ~250× real time and wrote **7.3 GB in 50 s**; + the slave must pace. Always run with a size guard. + ⚠️ **Do not read Canary's 6-channel PulseAudio stream as evidence the GAME is 5.1.** `pactl` will show `float32le 6ch 48000Hz`, channel-mapped to a full 5.1 layout, on any title. That is `AudioDriver::kFrameChannelsDefault = 6`, a