-
fix(control-lens): a control is only proven if its swing beats the signal's own drift · 7b2e5b4d
Three corrections after the first real run against the rig, each one a case of the tool answering a question it could not actually answer. 1. THE PLY VERDICT WAS A DIVISION BY ZERO. `ply` reported "EFFECTIVE, +inf % onsets/s" on d4. The truth: the envelope-ratio onset detector returned a flat 0.0 events/s, because d4 is a SUSTAINED bass and that detector only fires on a 1.6x jump between adjacent bins. Percentage against zero is infinity, and the tool declared an effect from an artifact — precisely what its own docstring promises never to do. Replaced with SPECTRAL FLUX (half-wave-rectified per-band magnitude increase, adaptive median + 2.5*MAD threshold), which fires on a NEW NOTE even when total level barely moves — exactly what ply does, since it subdivides events without getting louder. d4's baseline went 0.0 -> 8.1 onsets/s, and ply then measured a real, REVERTING change: 8.1 -> 4.7 at CC127 -> 7.7 back at 0. Plus a floor: under 0.8 onsets/s the answer is INCONCLUSIVE with an explanation, not a number. inf/nan deltas print NOT JUDGED and are excluded. 2. NO CHANGE MEANT THE WRONG LENS, NOT A DEAD CONTROL. gMask on d2 read "NO CHANGE, 0.5 dB rms" — correct arithmetic, wrong question. gMask is `midiOn "^41" (mask "t!7 f")`: it removes one eighth of a cycle, so it changes the PATTERN and costs ~0.6 dB. On the density lens the same control reads a clean -42% onsets. A "no change" verdict is only meaningful if the measure could have seen the change. 3. A-B-A, BECAUSE THE PATTERNS MOVE BY THEMSELVES. gMask showed an IDENTICAL -42% at both test values, which is either a control that fails to revert or a pattern that just varied — and d2 of vague_de_crime is `"~ c . <[~ c ~ c] [<c ~ ~ c> ...]>"`, a different bar every cycle. An A-B comparison cannot tell those apart. So the baseline condition is now re-measured at the END, the self-drift is reported, and any swing under 2x the drift is INCONCLUSIVE rather than EFFECTIVE. First use immediately paid off: ply's timbre swing 19.9% against 4.7% drift = trustworthy. Self-inflicted note for next time: these edits were made WHILE a batch loop was invoking the file, so one run died on a half-applied change (AttributeError on an argparse dest added two edits later). Its captured data was fine, but don't hot-edit a tool a running job is calling.
PLN (Algolia) authored7b2e5b4d
×