Contents

Dynamics

Dynamics processors control the volume envelope of signals, reducing dynamic range or removing unwanted quiet sections.

All effects in this file expose dry and wet as their last two parameters (Category B defaults dry=0, wet=1 for transform effects). See Effect Parameters Convention for the full spec.

comp

Compressor - Reduces dynamic range above threshold.

ParamTypeDefaultDescription
insignal-Input signal
threshnumber-12.0Threshold in dB
rationumber4.0Compression ratio
drynumber0.0Dry signal level (Category B)
wetnumber1.0Wet (processed) signal level (Category B)
attacknumber0.1Attack time in milliseconds
releasenumber10.0Release time in milliseconds

Aliases: compress, compressor

Reduces the level of signals that exceed the threshold. Higher ratios create more aggressive compression. A ratio of 4:1 means 4dB of input above threshold becomes 1dB of output.

attack and release set the envelope-follower time constants — pass them as named arguments. Shorter attack clamps transients harder; longer release sustains gain reduction between hits.

// Basic compression
saw(110) * ar(trigger(2)) |> comp(@, -12, 4) |> out(@)
// Slow, transparent leveling
saw(110) * ar(trigger(2)) |> comp(@, -12, 4, attack: 30, release: 250) |> out(@)
// Heavy compression (limiting-like)
saw(55) * ar(trigger(4)) |> comp(@, -20, 10) |> out(@)
// Gentle leveling
noise() * ar(trigger(1)) |> comp(@, -6, 2) |> out(@)

Related: limiter, gate


limiter

Limiter - Brickwall limiter that prevents signal from exceeding ceiling.

ParamTypeDefaultDescription
insignal-Input signal
ceilingnumber-0.1Maximum output level in dB
releasenumber0.1Release time in seconds
drynumber0.0Dry signal level (Category B)
wetnumber1.0Wet (processed) signal level (Category B)
lookaheadnumber0.0Lookahead time in ms (0 = off; capped at ~1ms)

Aliases: limit

A limiter is an extreme compressor (infinite ratio) that prevents the signal from ever exceeding the ceiling. Use to prevent digital clipping.

lookahead defaults to 0 (off). A positive value delays the signal so the limiter can react to a peak before it arrives, trading a small latency for cleaner transient control.

// Master limiter
saw(110) * 2 |> limiter(@, -0.1, 0.1) |> out(@)
// Limiter with lookahead for cleaner peak control
saw(110) * 2 |> limiter(@, -0.1, 0.1, lookahead: 1) |> out(@)
// Aggressive limiting for loudness
saw(55) * ar(trigger(4)) * 3 |> limiter(@, -1, 0.05) |> out(@)

Related: comp


gate

Noise gate - Silences signal below threshold.

ParamTypeDefaultDescription
insignal-Input signal
threshnumber-40.0Threshold in dB
rangenumber-40.0Attenuation applied when the gate is closed, in dB
hystnumber6.0Hysteresis in dB (open/close difference)
close_timenumber5.0Fade-out time (ms)
drynumber0.0Dry signal level (Category B)
wetnumber1.0Wet (processed) signal level (Category B)
attacknumber0.1Attack time in milliseconds
holdnumber0.0Hold time in milliseconds (gate stays open after signal drops)
releasenumber10.0Release time in milliseconds

Aliases: noisegate

Cuts the signal when it falls below the threshold, useful for removing noise during quiet passages. Hysteresis prevents chattering at the threshold by requiring the signal to drop further below the threshold before the gate closes.

The close_time parameter controls how quickly the gate fades out when closing, preventing abrupt cuts. attack, hold, and release (named arguments, all in milliseconds) shape the open/close envelope — a longer hold keeps the gate open through short dips below threshold.

// Basic noise gate
(saw(110) + noise() * 0.1) * ar(trigger(2))
    |> gate(@, -30, 6)
    |> out(@)
// Tight gate for percussive sounds
noise() * ar(trigger(8), 0.001, 0.05)
    |> gate(@, -20, 10)
    |> out(@)
// Slow fade-out gate
saw(110) * ar(trigger(2)) |> gate(@, -30, 6, 20) |> out(@)
// Long hold keeps the gate open through short gaps
noise() * ar(trigger(4)) |> gate(@, -30, -40, hold: 120, release: 80) |> out(@)

Related: comp