Files
Sylpheed/docs/re/structures/intro-audio-output-census.md
sylph-decoder ef4ea8fe86 re: the boot intro's audio output -- five live channels, not a stereo mix
Groundwork for the port's ask #4; it does not settle #4.

Captured the game's own output over the boot intro following the ALSA file-tee
recipe exactly -- paced pulse slave, --gpu=null, both mutes off. 148.02 s, 6ch
float32 48 kHz, 0.15-0.16 % silence against the 0.31 % the recipe page records
for its own clean run.

Provenance is the XMA probe rather than a screenshot, which is the right evidence
for an audio question: ADV's three contexts appear byte-exact (1294336 /
1118208 / 1171456), then the documented BGM_102 pair.

Five of the six channels carry distinct content; BR is 82 % silent and 11-15 dB
down. No channel is a copy of another -- the largest pairwise correlation is 0.70
between FL and FR.

That rules out a stereo mix, so 'ship one stream' cannot be right and the port's
held-wrong value stays wrong. It does NOT establish that summing is right, and
the 6-channel count is Xenia's hardcoded kFrameChannelsDefault -- what is
evidence is that five of them differ, which a stereo guest cannot produce.

NOT settled and named as such: the stream-to-channel mapping. The
cross-correlation of each captured channel against each decoded ADV stream has
not been run. One boot, one movie, and --gpu=null means no video cross-check.

Raw is 170 MB and is not committed; sent over share to the port.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
2026-08-30 08:13:50 +00:00

4.0 KiB
Raw Blame History

What the game actually emits over the boot intro — five live channels, not a stereo mix

Classification: measured. Xenia Canary, 2026-08-30, one boot, no input. Groundwork for the port's ask #4 — it does not settle #4, and the part it does not settle is named at the bottom.

Why this capture exists

The port ships one of ADV's three concurrent voice streams and its authored/audio.json records that as known wrong, held deliberately (voice-three-streams-are-concurrent.md). Neither "take one" nor "sum them" is established. The only thing that can settle it is what the game emits, so: record it.

The capture

Recipe followed exactly from audio-capture-alsa-file-tee.md — ALSA file tee in front of a paced pulse slave, --gpu=null, both mutes off:

run-canary --apu=alsa --mute=false --gpu=null --xma_param_probe=true

148.02 s, 6 channels, float32, 48 kHz.

Provenance is the XMA probe, not a screenshot — which is the right evidence for an audio question, because it witnesses the thing being recorded. The log carries ADV's three contexts byte-exact against the disc:

ctx packets byte_size
0 632 1 294 336
1 546 1 118 208
2 572 1 171 456

then two more — 1 150 976 / 1 269 760 — which are the documented BGM_102 pair. So the movie's voice decoded exactly as in the runs this corpus already records.

Capture quality: 0.150.16 % silence on the five live channels, against the 0.31 % the recipe page records for its own clean run. Cleaner than the reference.

What is in the six channels

⚠️ ALSA's channel order, not WAV's: captured i holds source [0,1,4,5,2,3], so the labels below are FL FR BL BR FC LFE. Deterministic and invertible.

ch peak dBFS rms dBFS % silent
0 FL 3.65 22.26 0.16
1 FR 2.22 20.89 0.15
2 BL 4.41 24.77 0.15
3 BR 11.65 36.06 82.18
4 FC 4.57 24.81 0.16
5 LFE 4.66 24.38 0.16

Five channels carry real, distinct content; one (BR) is 82 % silent and 1115 dB down. No channel is a copy of another — the largest pairwise correlation is 0.70 (FL/FR, which is what a stereo pair looks like), then 0.52 and 0.56.

🔴 What this already rules out

  • Not a stereo mix. Five independent channels are being emitted.
  • So "ship one stream" cannot be right, which the corpus already suspected but had not observed from the output side. The port's held-wrong value stays wrong.

⚠️ It does not follow that summing is right. This says the output is multichannel; it says nothing yet about which disc stream lands where.

⚠️ And do not read the 6 channels as proof the game is 5.1. CONTAINER-NOTES records that AudioDriver::kFrameChannelsDefault = 6 is a hardcoded Xenia constant — the format is Xenia's, only the content is the guest's. What is evidence here is that five of those six differ from each other, which a stereo guest cannot produce.

🟡 What is NOT settled — the stream → channel mapping

The decisive step is a cross-correlation of each captured channel against each of ADV's three decoded streams. That has not been run. Until it is:

  • which stream feeds which channel pair is unknown;
  • whether FC carries the dialogue is consistent with the corpus's centre-channel finding but not re-established here;
  • why BR is near-silent is unknown — a genuinely unused channel, a stream that ends early, or a decode that failed are all open.

⚠️ One boot, one movie. And --gpu=null means no video, so nothing here is cross-checked against what was on screen.

The raw capture is 170 MB and is not committed; it went over share to the port as 1788077587-9f2e30af1c98-capture.raw. Per-channel numbers: ../data/intro-audio-channel-census.txt.