Filters
Filters shape the frequency content of signals by attenuating or boosting certain frequencies.
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.
lp
Lowpass filter - Passes frequencies below the cutoff, attenuates above.
| Param | Type | Default | Description |
|---|---|---|---|
| in | signal | - | Input signal |
| cut | signal | - | Cutoff frequency in Hz |
| q | number | 0.707 | Resonance (0.5-20) |
| dry | number | 0.0 | Dry signal level (Category B) |
| wet | number | 1.0 | Wet (processed) signal level (Category B) |
Aliases: lowpass, svflp
A state-variable lowpass filter. Higher Q values add resonance at the cutoff frequency.
// Basic lowpass at 800 Hz
saw(220) |> lp(@, 800) |> out(@) // Envelope-controlled filter sweep
saw(110) |> lp(@, 200 + ar(trigger(4)) * 2000) |> out(@) // Resonant filter
saw(110) |> lp(@, 500, 8) |> out(@) hp
Highpass filter - Passes frequencies above the cutoff, attenuates below.
| Param | Type | Default | Description |
|---|---|---|---|
| in | signal | - | Input signal |
| cut | signal | - | Cutoff frequency in Hz |
| q | number | 0.707 | Resonance (0.5-20) |
| dry | number | 0.0 | Dry signal level (Category B) |
| wet | number | 1.0 | Wet (processed) signal level (Category B) |
Aliases: highpass, svfhp
Removes low frequencies. Useful for thinning out sounds or creating transitions.
// Remove sub frequencies
saw(110) |> hp(@, 200) |> out(@) // Hi-hat from noise
noise() |> hp(@, 8000) * ar(trigger(8), 0.001, 0.05) |> out(@) bp
Bandpass filter - Passes frequencies around the cutoff, attenuates others.
| Param | Type | Default | Description |
|---|---|---|---|
| in | signal | - | Input signal |
| cut | signal | - | Center frequency in Hz |
| q | number | 0.707 | Bandwidth (higher = narrower) |
| dry | number | 0.0 | Dry signal level (Category B) |
| wet | number | 1.0 | Wet (processed) signal level (Category B) |
Aliases: bandpass, svfbp
Isolates a band of frequencies. Higher Q values create a narrower, more resonant band.
// Telephone effect
saw(220) |> bp(@, 1000, 4) |> out(@) // Vocal formant
saw(110) |> bp(@, 500, 10) |> out(@) moog
Moog ladder filter - Classic 4-pole resonant lowpass filter.
| Param | Type | Default | Description |
|---|---|---|---|
| in | signal | - | Input signal |
| cut | signal | - | Cutoff frequency in Hz |
| res | number | 1.0 | Resonance (0-4, self-oscillates near 4) |
| max_res | number | 4.0 | Maximum resonance / self-oscillation threshold |
| input_scale | number | 0.5 | Input preamp drive (higher = more saturation) |
| dry | number | 0.0 | Dry signal level (Category B) |
| wet | number | 1.0 | Wet (processed) signal level (Category B) |
Aliases: moogladder
The Moog ladder filter, known for its warm, creamy sound. At high resonance values, it can self-oscillate.
// Classic Moog bass
saw(55) |> moog(@, 400, 2) |> out(@) // Filter sweep with high resonance
saw(110)
|> moog(@, 100 + sine(0.5) * 1000, 3.5)
|> out(@) // Self-oscillating filter (use as oscillator)
noise() * 0.01 |> moog(@, 440, 3.9) |> out(@) // Hot input with more saturation
saw(110) |> moog(@, 800, 2, 4.0, 0.8) |> out(@) Related: lp
sallenkey
Sallen-Key filter - MS-20 style filter with aggressive resonance.
| Param | Type | Default | Description |
|---|---|---|---|
| in | signal | - | Input signal |
| cut | signal | - | Cutoff frequency in Hz |
| res | number | 1.0 | Resonance (0-4, very aggressive) |
| mode | number | 0.0 | Filter mode (0.0 = lowpass, 1.0 = highpass) |
| clip_thresh | number | 0.7 | Feedback clipping threshold |
| dry | number | 0.0 | Dry signal level (Category B) |
| wet | number | 1.0 | Wet (processed) signal level (Category B) |
Aliases: sk, ms20
Based on the Korg MS-20 filter topology with diode clipping in the feedback path. Produces the aggressive, screaming resonance of that design.
// Classic MS-20 bass
saw(55) |> sallenkey(@, 600, 3) |> out(@) // Screaming resonance
saw(110)
|> sallenkey(@, 400 + sine(0.2) * 800, 3.8)
|> out(@) // Highpass mode
saw(110) |> sallenkey(@, 500, 2, 1.0) |> out(@)