Skip to content

The three calibration traps

--set is a held stimulus: it writes the analysis frame directly and that same frame drives every captured frame. That makes it perfect for isolating one binding and wrong for three things people reach for it anyway.

Trap 1 — --set beat=1 holds the beat gate high for the whole capture. Real beats are transient: beat fires on one hop and is false on the next. Held high, every beat-driven accent in the preset is at full deflection in the still you are looking at — a + beat * 0.155 thickness term that should flash for a frame instead reads as the preset’s baseline. The result is that a working preset looks broken in a still (permanently blown-out, or so busy the geometry is unreadable), and the natural response — turning the accent down — breaks it for real on live audio. If you want a beat, capture one:

Terminal window
# Transient beats through the real onset detector, no asset needed
cargo run -p standalone --example shot -- --preset "Drift" \
--signal click:120 --strip 8 --out click.png

Trap 2 — --set band magnitudes are not real levels. --set bass=0.8 writes 0.8 onto the frame; a band that arrives through the analyzer comes in through the normalizer instead, and what 0.8 means differs between the two.

This trap used to be stated as a magnitude gap — a full-scale 60 Hz sine reads bass ≈ 0.19 and a 120 BPM click track peaks at bass ≈ 0.011, so --set bass=0.8 is four to seventy times too hot. Those figures are raw-scale and ADR-0049 retired them; they now describe bass_raw, and the table in what real material actually produces is where they live. On the normalized scale the same sine reads 1.000, because a steady tone is its own recent peak.

The trap survives the rescaling, in a different shape: a normalized band is a fraction of the material’s own peak, so --set bass=0.8 claims “80 % of peak, held forever”, which no music does. The number is no longer wrong by two orders of magnitude — it is wrong about time.

So every --signal / --audio filmstrip prints the levels it measured, and those are the numbers to calibrate a gain against (here, --signal bass:60):

audio levels over 355 analysis hops (past warm-up) — calibrate gains against these, not against --set magnitudes:
signal min mean max
bass 1.000 1.000 1.000
mid 0.000 0.000 0.000
treb 0.000 0.000 0.000
onset 0.006 0.405 1.000
onset peaks at 1.000 on hop 20 — the shipped attractor reseed gates run 0.50 to 0.75

--audio <clip.wav> on real material is the one that answers “what does my music actually produce”; --signal answers it for a known synthetic tone. Use --set to ask “does this binding do anything at all”, not to decide how much of it to apply.

onset is in that table since Plan 0057, and it is not a band. It is there because a whole class of binding — every shipped attractor’s reseed, every beat-latched accent — is gated on it, and whether a given stimulus ever crossed such a gate was not answerable from a capture. The peak hop is printed beside it because that hop is the argument to --at.

Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.