fix(take-lens): detection resolution is not a display preference — plus mix
Added `mix` (sum the orbits to one gain-corrected, trimmed stereo file), then found two real bugs in the trim rule by verifying my own render instead of trusting it. BUG 1 — the rule demanded idle hands AND silence audio_lens profile on the rendered mix reported rms -180 dBFS at 19.2 min: DIGITAL silence, sitting in the middle of a "trimmed" master. The first rule only cut where the hands were idle AND nothing sounded, and there PLN was busy on the controller with nothing playing. That third state — fiddling in silence — IS the practice/ plugging-in the trim exists to remove. Silence needs no corroboration from the hands, so it is now its own kind with its own (much shorter) 20s threshold: long enough to never eat a break or a drop's pre-silence (~4 bars, under 8s at these tempos), short enough to catch the real thing. BUG 2 — and the reason it was invisible: analysis ran at DISPLAY resolution A direct 1-second measurement of the same mix found 103 seconds of silence in five runs of 11-31s. The classifier, bucketing at 15s, found NONE of them: a 17-second silence straddling two 15-second buckets leaves no bucket fully silent, so every bucket's rms sat far above -60 dBFS. The threshold was fine; the grain was lying. Analysis now always runs at GRAIN_S = 1s and `--bucket` only sets the sparkline width. Detection resolution must never be a display preference — the coarse view is for eyes, the decision is for data. STRUCTURAL: one rule, one reader `classify()` is now the single source of the cut rule and `analyse()` the single audio pass, both shared by the report and the mixer. They were duplicated, which is the worst possible arrangement here: a mixer that cuts what the report called `keep` destroys material silently. Also dedup candidates by 80% OVERLAP rather than strict containment — the hands-idle run began 1s before the silence run on take 94, so containment reported the same stretch twice and the table contradicted itself. VALIDATED end to end on take 94 (21.14 min, 12 orbits) candidates 5, no contradictions: 3x silence (21s, 30s, 68s) TRIM, 2x playing (68s at 8.00 and 3.72 orbits avg) KEEP. Trimming only `silence`+`dead` -> 19.15 min out, peak -3.36 dBFS, rms -24.47. Re-measured the render: silence 103s -> 52s. The three survivors are 17s, 18s and 11s — all under the 20s threshold BY DESIGN, plausibly musical gaps that want an ear rather than a rule. Spectral balance broadband at 60s/300s/600s/900s via audio_lens profile (the opening 20s reads kick/sub-only because it genuinely is). `loop` is deliberately NOT cuttable: a droning pad under idle hands can be an intro as easily as a distraction. It proposes; the ear decides.
Showing
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment