audioJS

@audio/eq-dynamic

Status calibrated

npm1.2.3licenseMIT

Dynamic EQ — per-band peaking gain driven by band energy (Pro-Q3/soothe class, generalized de-esser)

Overview

Install
Updated
Family
eq, 10 packages under it
Tags
shape

Dynamic EQ — per-band peaking gain driven by band energy (Pro-Q3/soothe class)

import dynamicEq from '@audio/eq-dynamic'

The generalized de-esser: each band watches its own energy through a bandpass sidechain and attack/release envelope follower, and only engages a peaking cut (or, in 'up' mode, a boost) once that band crosses threshold — quiet bands stay untouched, loud transients get pulled down proportionally to ratio, capped at maxGain. Peaking coefficients are re-derived every 64-sample block for smooth gain changes without per-sample coefficient cost.

dynamicEq(data, { fs: 44100, bands: [
  { fc: 6000, threshold: -30, ratio: 4, attack: 3, release: 60 },  // de-ess
  { fc: 250, threshold: -20, mode: 'up', maxGain: 6 },             // upward warmth
]})
Param Default
bands [] Array of per-band settings
bands[].fc — Band center frequency, Hz — both sidechain and peaking filter
bands[].Q 2 Sidechain bandpass / peaking filter Q
bands[].threshold -30 Level, dB, above which gain reduction (or boost) engages
bands[].ratio 3 Compression ratio applied to the amount over threshold
bands[].attack 5 Envelope attack, ms
bands[].release 80 Envelope release, ms
bands[].maxGain 12 Maximum gain change, dB — caps cut ('down') or boost ('up')
bands[].mode 'down' 'down' cuts over-threshold energy; 'up' boosts it instead
fs 44100 Sample rate, Hz

Unlike the biquad-based atoms in this family, params does not persist state across calls — every call allocates fresh sidechain/audio-path biquad state and envelope followers starting at zero. Each call is a self-contained batch pass, not a streaming chunk: call it once with the whole buffer rather than chunk-by-chunk.

Use when: de-essing, resonance taming, mix-bus "automatic EQ" that only reacts when a band gets too loud — anywhere a static EQ would need constant automation.


Part of @audio/eq — the eq family umbrella.

MIT © audiojs