Low/high shelving filters¶
BiquadCoefficients::design_shelf(ShelfKind::Low/High, rate, midpoint, gain_db,
slope) adds low/high shelves to the existing prepared one-channel processing.
Gain is -120..120 dB; midpoint is strictly between DC and Nyquist. Shelf slope
is in (0,1], distinct from Q: one gives the steepest monotonic cookbook profile.
The midpoint response is half the requested gain in dB. The selected endpoint
gets full gain while the opposite endpoint remains unity. Equal boost/cut designs
are reciprocal. Formula reference: Audio EQ Cookbook.
Existing finite coefficient/Jury stability checks still apply; extreme designs with unrepresentable margins reject. Smoothing, headroom and nonfinite/denormal policies remain caller concerns. Three groups check endpoint/ midpoint and reciprocal responses, monotonic grids over both shelves/gains/slopes, boost/cut impulse cancellation, block partition identity, reset, invalid settings and heap-free processing. These fixtures establish the tested portable profiles, rather than every numerical corner or a native deadline. See decision 0087.