Build with this node

Start with a prompt in Studio, or copy it into your own coding agent.

Ask Studio

@maruaudio/dsp/dynamics/keyed-compressor is a feed-forward, log-domain compressor with a sidechain key: optional detector filters, peak or RMS level in dB, a quadratic soft-knee gain computer (Giannoulis, Massberg and Reiss, JAES 2012), one-pole smoothing of the reduction with an integer hold, a range ceiling and a dry/wet mix. Ratio 1000 is the limiter sentinel. It also exports the auto-makeup, stereo link and crest-factor auto-release laws.

const state = initDynamicsCompressorNode(48000)
updateDynamicsCompressorBlock(state) // once per block
const y = dynamicsCompressorNodeTick(state, x, key) // key = x for internal

Parameters

Setters are setDynamicsCompressor<Name>(state, value).

NameRange the setter enforcesDefaultUnit
Threshold / Ratio / Knee−80 to 0 dB / 1 to 1000 / 0 to 72 dB−18 / 4 / 6dB, ratio
Attack / Release0 to 1 (0 instantaneous) / 0.001 to 100.005 / 0.08s
Hold0 to 0.5, stored as whole samples; suspends release only0s
Range0 to 60, ceiling on the applied reduction60dB
Makeup / Mix−24 to +36 dB / 0 to 10 / 1dB, linear
DetectorMode / RmsWindow≥ 1 RMS, else peak / 0.0005 to 0.2 sPeak / 0.010mode, s
DetectorHp / DetectorLp20 to 2000 Hz, off at 20 / 200 to 20000 Hz, off at 20000Off / OffHz
AutoRelease≥ 1 onOffflag

Lifecycle

initDynamicsCompressorNode(sampleRate) → setters → updateDynamicsCompressorBlock once per block (makeup and release coefficient, from the crest state with auto-release) → dynamicsCompressorNodeTick(state, input, key) → resetDynamicsCompressorNode, which clears history and keeps the settings. prepareDynamicsCompressorNodeSampleRate re-derives rate values.

When to use it

Bus or channel compression, or ducking one signal under a key such as a kick.

Limits

  • Mono with one key input; a zero key gives no reduction, so an unpatched sidechain is bypass. Stereo linking is the caller's.
  • Math.exp runs only at block rate; per sample, log, pow and, in RMS mode, sqrt. Reduction, RMS and crest states are f32; detector filters at their defaults are skipped.

Algorithm properties and proofs

No Lean 4 proof is mapped to this node.

Explore proofs alongside performance

Parameters

ParameterTypeSetter
Dynamics compressor threshold dynamicsCompressorThresholdfloatsetDynamicsCompressorThreshold
Dynamics compressor ratio dynamicsCompressorRatiofloatsetDynamicsCompressorRatio
Dynamics compressor knee dynamicsCompressorKneefloatsetDynamicsCompressorKnee
Dynamics compressor attack dynamicsCompressorAttackfloatsetDynamicsCompressorAttack
Dynamics compressor release dynamicsCompressorReleasefloatsetDynamicsCompressorRelease
Dynamics compressor hold dynamicsCompressorHoldfloatsetDynamicsCompressorHold
Dynamics compressor range dynamicsCompressorRangefloatsetDynamicsCompressorRange
Dynamics compressor makeup dynamicsCompressorMakeupfloatsetDynamicsCompressorMakeup
Dynamics compressor mix dynamicsCompressorMixfloatsetDynamicsCompressorMix
Dynamics compressor detector mode dynamicsCompressorDetectorModefloatsetDynamicsCompressorDetectorMode
Dynamics compressor rms window dynamicsCompressorRmsWindowfloatsetDynamicsCompressorRmsWindow
Dynamics compressor detector hp dynamicsCompressorDetectorHpfloatsetDynamicsCompressorDetectorHp
Dynamics compressor detector lp dynamicsCompressorDetectorLpfloatsetDynamicsCompressorDetectorLp
Dynamics compressor auto release dynamicsCompressorAutoReleasefloatsetDynamicsCompressorAutoRelease

Dependencies

Dependents

Used by