Commit 9863a727 by PLN (Algolia)

docs(postprod): boundaries vs edits, and verify a fade by measurement not by command line

parent 7b9dd178
...@@ -41,7 +41,13 @@ from a detector.** Nine boundaries verified by ear (#3 893.0 · #4 1118.4 · #5 ...@@ -41,7 +41,13 @@ from a detector.** Nine boundaries verified by ear (#3 893.0 · #4 1118.4 · #5
it landed within 0.7 s on both boundaries that also have ear answers (#8, #10) — n=2 and it landed within 0.7 s on both boundaries that also have ear answers (#8, #10) — n=2 and
on the easy cases, so it earns first listen, not trust. on the easy cases, so it earns first listen, not trust.
- [ ] **A1.3 Settle #13, #15** — 🚨 **ear-only, no candidates will ever come from the timbral lens** (see B1). - [ ] **A1.3 Settle #13, #15** — 🚨 **ear-only, no candidates will ever come from the timbral lens** (see B1).
- [ ] **A1.4** Write `segments_v4.json``v4_provenance/finish.sh` → rebuild judge data. - [x] **A1.4 DONE**`apply_boundaries.py``segments_v4.json``render_release.py`
(split · verify · continuous). 14 tracks × streaming+club, durations exact, 48 kHz/24-bit.
Continuous mixes re-rendered drop-free.
- [x] **A1.5 Seam pass** — release check at `bounds.html?set=<gig>-release`; PLN's five fixes
applied as `edits` (trims/fades), each verified by gain-ratio against the unfiltered master.
- [ ] **A1.6** OPEN: PLN's *"maybe with reverb over last 5s so we hear it slightly echo as last
sound"* on the record's close. Supported as `reverb_tail_s`, left OFF pending an A/B.
### A2 · #183 — REVOLUTION mix fix · blocked by A1 ### A2 · #183 — REVOLUTION mix fix · blocked by A1
......
...@@ -89,6 +89,30 @@ smoke test — which derives its data file from the page's own `?set=`, because ...@@ -89,6 +89,30 @@ smoke test — which derives its data file from the page's own `?set=`, because
hardcoded path let the test assert against a different set than the browser had hardcoded path let the test assert against a different set than the browser had
loaded. loaded.
## Boundaries vs edits — the distinction that matters most
The ear file holds two different kinds of answer and they must not be mixed:
| block | meaning | effect |
|---|---|---|
| `verified` | a **boundary** | the set is butt-joined, so moving it shifts BOTH neighbours |
| `edits` | a per-track **trim / fade** | the audio is DROPPED — a gap opens, and the continuous mix skips it too |
Confusing them silently hands a neighbour a second of someone else's silence,
which is precisely the artefact the trims exist to remove. `apply_boundaries`
asserts an edit stays inside its own track's span, and treats gaps as legal
while still refusing overlaps.
Supported edit keys: `start`, `end` (trims), `fade_in_s`, `fade_out_s`,
`fade_out_to` (partial duck — `afade` can only reach silence, so a "100 to 50%"
ramp is expressed as a gain expression), `reverb_tail_s`.
**Verify a fade by measurement, never by reading the command line.** Render the
same span with and without the filter chain and take the per-frame RMS ratio;
that is what proved the OPAL fades (CRIME flat 1.0 then ramping to 0.546 over
its last second, REVOLUTION 0.022 → 1.0 across 2 s) and what showed an 80 ms
fade was *hiding* WAP's truncation burst at −26.8 dB rather than removing it.
## Ground truth rules ## Ground truth rules
- `judge_specs/<gig>_boundaries_ear.json` is **ground truth**. Detector output - `judge_specs/<gig>_boundaries_ear.json` is **ground truth**. Detector output
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment