Applying my own METHOD entry one iteration after writing it found four refuted
statements still asserted unmarked where a reader lands:
* envelope correlation 'has no resolving power' -- in three places including
HANDOFF. The port controlled the same estimator on a single track and got
r=1.0000 at zero offset; the saturation needs CONCURRENT streams sharing
timing. I agreed to this in a message and never landed it.
* '8 of 10 three-chunk regions' -- still asserted in HANDOFF in a different
section from its own correction.
* 'r9 is a wild pointer, never a guest address' -- still asserted inside the
kept-for-the-record section.
* the ALSA channel permutation, stated without scope, when a later capture
measured the identity and labelling from it put the silent channel on the
wrong name.
All four marked in place, striking the sentence and pointing forward.
Two lessons added: a 'kept for the record' section still asserts, so labelling
the heading is not enough; and naming a refuted claim keeps it greppable, so the
audit returns its own corrections as hits and every hit needs reading.
The first item is the one worth admitting: I acknowledged that correction in a
message, wrote the entry about corrections that never land, and then did not land
my own for a full iteration.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
170 lines
8.2 KiB
Markdown
170 lines
8.2 KiB
Markdown
# ✅ The boot intro's audio: the movie's own 5.1 bed at 0.600, **plus** three streams in 5.1
|
||
|
||
**Classification: measured.** Xenia Canary, 2026-08-30, one boot, no input. This
|
||
settles the port's ask #4 and **confirms** the corpus's leading hypothesis from the
|
||
output side, where it had been recorded as "not established".
|
||
|
||
## 🔴 First: `ADV.wmv` is not three XMA streams. It is one WMA Pro 5.1 track.
|
||
|
||
```
|
||
ffprobe /disc/dat/movie/ADV.wmv
|
||
Stream #0:0(jpn): Audio: wmapro, 48000 Hz, 5.1, fltp, 384 kb/s
|
||
Stream #0:1(jpn): Video: wmv3, 1280x720, 30 fps
|
||
```
|
||
|
||
One audio stream, **5.1**, decoded by Xenia's WMA path — not the XMA path the three
|
||
probe contexts come from. Any framing of the intro's audio as *only* "which of three
|
||
voice streams to ship" was missing the bed entirely.
|
||
|
||
## The decomposition
|
||
|
||
Aligning the [148 s capture](intro-audio-output-census.md) against that track and
|
||
solving `capture = g × movie + residual`
|
||
([`../data/intro-audio-decomposition.txt`](../data/intro-audio-decomposition.txt)):
|
||
|
||
| ch | gain | r | capture rms | residual rms | residual/capture |
|
||
|---|---|---|---|---|---|
|
||
| FL | 0.600 | +0.905 | −21.86 | −29.28 | −7.43 dB |
|
||
| FR | 0.600 | +0.935 | −20.28 | −29.29 | −9.02 dB |
|
||
| **FC** | 0.597 | +0.146 | −25.18 | −25.27 | **−0.09 dB** |
|
||
| **LFE** | 0.600 | **+1.000** | −43.66 | **−115.73** | **−72.06 dB** |
|
||
| BL | 0.600 | +0.956 | −24.89 | −35.46 | −10.58 dB |
|
||
| BR | 0.600 | +0.964 | −24.02 | −35.49 | −11.47 dB |
|
||
|
||
**The gain is 0.600 on every channel** — a uniform −4.44 dB, which is a mixer
|
||
setting, not a fit artefact. **LFE is reproduced to −115.73 dBFS**, 72 dB below the
|
||
signal: at that residual the two decoders agree essentially exactly, which is what
|
||
rules out "the leftovers are just codec differences".
|
||
|
||
🔴 **And `FC` is the exception that carries the answer.** The movie explains
|
||
**nothing** of the capture's centre channel — the residual is the whole signal
|
||
(−0.09 dB). The movie's own FC is 91.6 % silent; the capture's is not.
|
||
|
||
## The residual is three signals, not one
|
||
|
||
| | FL | FR | FC | LFE | BL | BR |
|
||
|---|---|---|---|---|---|---|
|
||
| FL | 1.000 | **0.918** | 0.017 | 0.001 | 0.009 | 0.004 |
|
||
| FR | **0.918** | 1.000 | 0.034 | 0.001 | 0.015 | 0.014 |
|
||
| FC | 0.017 | 0.034 | 1.000 | 0.000 | 0.385 | 0.378 |
|
||
| LFE | 0.001 | 0.001 | 0.000 | 1.000 | 0.000 | −0.000 |
|
||
| BL | 0.009 | 0.015 | 0.385 | 0.000 | 1.000 | **0.929** |
|
||
| BR | 0.004 | 0.014 | 0.378 | −0.000 | **0.929** | 1.000 |
|
||
|
||
Three coherent groups: a **front pair** (0.918), a **rear pair** (0.929), and a
|
||
**centre** whose partner LFE is empty. The FC residual's 100 ms frame levels span
|
||
**34 dB** (median −53.9, p90 −19.9) — bursty, not steady noise.
|
||
|
||
## ✅ This confirms the 5.1 hypothesis, and predicts the silent channel correctly
|
||
|
||
[`voice-three-streams-are-concurrent.md`](voice-three-streams-are-concurrent.md)
|
||
recorded "three concurrent stereo streams is six channels" as the obvious reading
|
||
and marked it **not established**, with a specific piece of supporting detail: that
|
||
`ADV` stream 2 is **mono-in-stereo**, *"a centre paired with a silent LFE looks
|
||
exactly like that"*.
|
||
|
||
That is exactly what the residual shows — a live centre whose paired channel is
|
||
empty to −115 dB. Measured from the output, with no access to the stream contents:
|
||
|
||
| XMA stream | lands in |
|
||
|---|---|
|
||
| one | **FL, FR** |
|
||
| one | **FC**, LFE silent |
|
||
| one | **BL, BR** |
|
||
|
||
**So both things are true and the port needs both**: the movie's own 5.1 WMA Pro
|
||
track *and* the three streams mixed over it in 5.1.
|
||
|
||
## 🔴 Correction to the census page, and to the recipe page's channel order
|
||
|
||
[`intro-audio-output-census.md`](intro-audio-output-census.md) labelled its channels
|
||
using the permutation `[0,1,4,5,2,3]` that
|
||
[`audio-capture-alsa-file-tee.md`](../audio-capture-alsa-file-tee.md) records for
|
||
ALSA. **That permutation does not apply to this capture.** The 6×6 correlation
|
||
matrix was computed without assuming any order, every row's maximum falls on a
|
||
distinct movie channel, and the result is the **identity**.
|
||
|
||
So the census's *"BR is 82 % silent"* was really **LFE** — which also reconciles it
|
||
with the movie, whose LFE is 80.64 % silent. ⚠️ The recipe page's permutation was
|
||
measured on a different chain and is not wrong there; what is wrong is assuming it
|
||
travels. **Measure the channel order per capture; a 6×6 matrix that comes out a
|
||
clean permutation is its own control.**
|
||
|
||
## Reach
|
||
|
||
⚠️ **One boot, one movie.** `ADV` only.
|
||
✅ **The assignment is now determined** — see the section below. It was open when
|
||
this page was first written.
|
||
⚠️ `--gpu=null`, so no video cross-check.
|
||
✅ The 0.600 gain is measured on this run; whether it is a fixed mix constant or a
|
||
volume setting is not established.
|
||
|
||
|
||
## ✅ Which stream is which (2026-08-30, later)
|
||
|
||
The three chunks were dumped from the resolved voice region
|
||
(`examples/adv_voice_dump.rs`) and decoded:
|
||
[`../data/adv-stream-assignment.txt`](../data/adv-stream-assignment.txt).
|
||
|
||
| chunk | `byte_size` | probe ctx | L rms | R rms | R silent |
|
||
|---|---|---|---|---|---|
|
||
| 0 | 806 912 | **ctx0, clipped tail** (full 1 294 336) | −24.79 | −24.81 | 53.1 % |
|
||
| 1 | 1 118 208 | ctx1 | −20.33 | **−inf** | **100 %** |
|
||
| 2 | 1 171 456 | ctx2 | −30.67 | −30.68 | 53.6 % |
|
||
|
||
### 🔴 Two instruments failed first, and both look convincing
|
||
|
||
* **Envelope correlation cannot discriminate *here*.** A per-pair lag search returns
|
||
**0.86–0.95 for every chunk against every channel**, because all six residual
|
||
channels share the dialogue's activity timing. A number that high reads as a
|
||
result; it is the instrument having no resolving power **in this regime**.
|
||
⚠️ **Corrected 2026-08-30 — do not generalise this.** The port agent controlled
|
||
the same estimator on a single dialogue track and got **r = 1.0000 at zero offset
|
||
and −0.08…+0.08 everywhere else**: it localises sharply. The saturation here is
|
||
specific to **concurrent streams sharing timing at zero lag**, which a lag search
|
||
over one track never encounters. This page said it flatly for a day after that
|
||
correction was known, which is the failure `METHOD.md` calls *a correction that
|
||
does not reach the artifact*.
|
||
* **Sample-level correlation returns ≈ 0.** The chunks do not start with the movie
|
||
and the XMA decode's framing offset is unknown.
|
||
|
||
### ✅ Level settles it, under the same 0.600 gain
|
||
|
||
| chunk | level | × 0.600 | nearest residuals (error, dB) |
|
||
|---|---|---|---|
|
||
| 0L | −24.79 | −29.23 | **FL 0.05** · FR 0.06 · FC 3.96 |
|
||
| 1L | −20.33 | −24.77 | **FC 0.50** · FL 4.51 |
|
||
| 2L | −30.67 | −35.11 | **BL 0.35** · BR 0.38 · FR 5.82 |
|
||
|
||
Each stream lands within **0.5 dB** of exactly one residual pair and misses the
|
||
others by ~4–6 dB. **The same 0.600 that scales the movie bed also scales the
|
||
voice** — which is itself worth having: it is one mixer gain, not two.
|
||
|
||
✅ **Ratio test, immune to chunk 0 being clipped:** chunk0 − chunk2 = **+5.88 dB**
|
||
against FL − BL = **+6.18 dB**, agreeing to **0.30 dB**; swapped, the ratio would be
|
||
wrong by **11.76 dB**.
|
||
|
||
✅ **Structural confirmation.** Chunk 1 is the *only* chunk with a digitally silent
|
||
channel, and LFE is the *only* output channel with an empty residual (−115.73 dBFS).
|
||
One to one. And the internal L/R correlations track: chunk 0 **+0.932** against the
|
||
FL/FR residual's **+0.918**, chunk 2 **+0.962** against BL/BR's **+0.929**.
|
||
|
||
| stream | → |
|
||
|---|---|
|
||
| ctx0 · 1 294 336 | **FL, FR** |
|
||
| ctx1 · 1 118 208 | **FC** (LFE silent) |
|
||
| ctx2 · 1 171 456 | **BL, BR** |
|
||
|
||
🔴 **And the identifier this is indexed by does not resolve against the disc.** The
|
||
port refused to apply this assignment because the three contexts sum to 3 584 000 B
|
||
against a resolved region of 3 114 352. It was right to: the **region start is
|
||
wrong**, by 238 packets for `ADV` and on 8 of 10 multichannel regions disc-wide —
|
||
[`voice-region-starts-late.md`](voice-region-starts-late.md). The assignment above
|
||
still stands (the ratio test was chosen to be immune to the clipping), but chunk 0's
|
||
absolute level was measured over 62 % of its stream.
|
||
|
||
⚠️ **Reach.** Levels, not waveforms — this is an argument from three numbers
|
||
agreeing to 0.5 dB and a 1:1 structural match, not from a matched waveform. One
|
||
movie, one boot. And chunk 0 is a clipped tail, which is why the ratio test is
|
||
quoted alongside the absolute match.
|