Commit 3ec21fc9 by PLN (Algolia)

docs(armada): log 027 — the four findings that came from measuring the output

Periodicity measuring length then role, dead bars grading S, no headroom against amp=gain^4,
and 1 loop in 6 opening on a weak beat. Plus the two bugs the checks caught in my own work,
which is the argument for having them.
parent 12fd5bb7
......@@ -33,7 +33,8 @@ Then: run it, look at what came out, fix what was wrong, run it again.
## Prise (findings / artifacts)
- `tools/foundry/engine/{stempack,roles,kitcheck}.py`, 18 new tests, suite 86 → 104.
- `tools/foundry/engine/{stempack,roles,kitcheck}.py` + `kitgate.py` + `restage.py`,
26 new tests, suite 86 → 112.
- MAREA declares its tempo in its filenames, so it is free ground truth. Final grid:
**123.0 bpm against a declared 123 — 0.0 % off.**
- **96 kHz was breaking the finder.** At native rate it returned 123/123/124/**119**/
......@@ -48,6 +49,32 @@ Then: run it, look at what came out, fix what was wrong, run it again.
- The probe was looking in the wrong place with the wrong lens, and threw away good
material both ways — see below.
### Then four more, found by measuring the output instead of reading it
- **The periodicity check was measuring loop length.** Autocorrelation at lag *k* has
only *N−k* overlapping frames; normalised by `ac[0]` it scored a *perfectly periodic*
click track 0.418 / 0.623 / 0.754 at 2 / 4 / 8 bars. Then the floor had to go per role:
medians drums 0.754, fx 0.549, tonal 0.214, bass 0.173, **vox 0.087**. One threshold
condemned 12 of 20 vocal loops for the crime of being vocal.
- **Dead bars grade S.** A 4-bar loop whose last two bars are a fade is silent-to-silent
— a perfect seam — at an exact bar length. Ten of the first 161 cuts were that. Now
rejected at export, not reported afterwards.
- **Kits had no headroom.** MAREA's ALL DRUMS and KIT both peak at **+0.2 dBFS**, and
`amp = gain^4`, so `# gain 1.2` is +7.6 dB and the orbit clips the moment you touch it.
Kits now land at −6 dBFS as *one gain per kit* (per-file would flatten a sparse hat
against a full drum bus) and never boosting.
- **1 loop in 6 opened on a weak beat.** The exact "timed ok but cut BCDA/DABC" complaint
from July. The roll point is zero-crossing snapped by up to ~10 ms against a 20 ms
attack window — enough to flip two near-tied slots. Rotation now checks its own result
and repeats: best slot 29 → 46 of 60, worse half 10 → **1**.
And two bugs the *checks* caught in my own work, which is the argument for having them:
`kitgate` re-grades the shipped files instead of trusting the manifest, and immediately
found that staging applied its gain after grading, so the recorded number described audio
that was never written. Separately, a report section I added never rendered — a
`str.replace` whose anchor did not match, and the one patch in that file where I had not
asserted on the anchor.
## Sel (the shareable learning)
**Two ways to be wrong about a stem, and they pull in opposite directions.**
......@@ -83,6 +110,14 @@ peak-picker finds peaks in a flat envelope — a steady 50 Hz sine yields 84 ons
six seconds. HPSS was the obvious fix and is worse: it hears a modern kick as harmonic
and calls a drum bus 9 % percussive.
**And check the instrument before you accuse the rig.** The first measurement of "do
loops start on their downbeat" said 17 %, which looked like a broken feature. It scored
16 slots with no full-band term while the rotator scores `bars×4` slots *with* one — the
disagreement was mine. Re-measured with the rotator's own scorer, factored out so the two
cannot drift apart, the real number was 48 % best-slot with a median miss of 0.032: mostly
near-ties, but a genuine 17 % starting on a weak beat. The bug was real *and* the first
number was wrong, which is the annoying case.
## Hameçon (hook)
"The machine told me the drum stem was a bass. It was right about every number and
......
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