True when band, as currently configured, is mathematically IDENTITY — its RBJ cookbook
section reduces to H(z) ≡ 1 for every sample, whatever its frequency or Q, so running it
changes nothing. Only the gain-carrying shapes (bandHasGain: bell/lowShelf/highShelf)
can be identity, and only at exactly 0 dB: the cookbook's amplitude term A = 10^(gainDb/40)
collapses to 1, which makes the numerator and denominator coefficients equal term-for-term
(b0=a0, b1=a1, b2=a2 — see the derivation in the PR that introduced this check), a provable
property, not an approximation. A pass filter (hpf/lpf) or a notch is NEVER identity: their
shape ignores gain entirely and always removes or nulls something — an HPF at 20 Hz still
rolls off sub-audio content, a notch still nulls its centre — so bandHasGain gates
this on purpose rather than checking gainDb === 0 alone.
WHY THIS EXISTS (the cost of asserting the console's declared default at boot). Every
untouched lane runs defaultEqState's 4-band cascade — 4 identity biquads per leg ×
up to 64 input lanes (plus MAIN) — on a lane that needs none of it. Parking each identity
band (native eq_enabled[i] = 0, which the RT
cascade already treats as "this section does not run" — omx_biquad_cascade in mix_dsp.h)
removes that cost while the row keeps reporting its full band count and curve untouched: this
is what reaches the DSP, never what the operator's EQ tab shows or the session stores.
True when
band, as currently configured, is mathematically IDENTITY — its RBJ cookbook section reduces toH(z) ≡ 1for every sample, whatever its frequency or Q, so running it changes nothing. Only the gain-carrying shapes (bandHasGain: bell/lowShelf/highShelf) can be identity, and only at exactly 0 dB: the cookbook's amplitude termA = 10^(gainDb/40)collapses to 1, which makes the numerator and denominator coefficients equal term-for-term (b0=a0, b1=a1, b2=a2— see the derivation in the PR that introduced this check), a provable property, not an approximation. A pass filter (hpf/lpf) or a notch is NEVER identity: their shape ignores gain entirely and always removes or nulls something — an HPF at 20 Hz still rolls off sub-audio content, a notch still nulls its centre — so bandHasGain gates this on purpose rather than checkinggainDb === 0alone.WHY THIS EXISTS (the cost of asserting the console's declared default at boot). Every untouched lane runs defaultEqState's 4-band cascade — 4 identity biquads per leg × up to 64 input lanes (plus MAIN) — on a lane that needs none of it. Parking each identity band (native
eq_enabled[i] = 0, which the RT cascade already treats as "this section does not run" —omx_biquad_cascadeinmix_dsp.h) removes that cost while the row keeps reporting its full band count and curve untouched: this is what reaches the DSP, never what the operator's EQ tab shows or the session stores.