filter

filter · filters

Multi-mode resonant VCF — three 2-pole (12 dB/oct) Faust sections running in parallel with a MODE switch picking one: 0 = LOWPASS, 1 = HIGHPASS, 2 = BANDPASS (that order, not LP/BP/HP). CUTOFF 20 Hz-20 kHz log; RES 0..0.99 mapped to Q = res x 20 + 0.7, so maximum resonance peaks ~26 dB over a unity passband — it rings hard but never self-oscillates. Two CV jacks, each with its own attenuverter knob: cutoff CV is exponential (+/-1 = +/-5 octaves around the knob at full depth, clamped to the 20 Hz-20 kHz window), res CV is additive on the 0..0.99 scale. Both CV values pass the DSP's ~7 Hz one-pole smoother, so this is an envelope/LFO modulation input, not an audio-rate FM input.

The bread-and-butter subtractive-synthesis filter: patch it between an oscillator and a VCA, sweep the cutoff, and a bright harmonic-rich tone turns into a musical gesture. Three characters share one panel — LOWPASS (mode 0) keeps the lows and rolls off above cutoff, HIGHPASS (mode 1) does the reverse, BANDPASS (mode 2) keeps only a slice around cutoff. All three are two-pole (12 dB/octave) Faust sections that run in parallel on the input; the mode control simply picks which one you hear, so switching is instantaneous and un-crossfaded (it can click under a loud signal). Resonance emphasises the corner rather than lifting the whole passband: it maps to Q = res × 20 + 0.7, so at maximum the response peaks about 26 dB above the passband — loud enough to overdrive whatever comes next, but this design never self-oscillates, so it is a filter, not a sine source. Both CV jacks are trimmed by their own attenuverter knob and then smoothed by the DSP's ~7 Hz one-pole, which makes envelope and LFO sweeps click-free and rules out audio-rate FM through the cutoff jack.

the faceplate

filteraudioaudiocutoffcvrescvaudioaudioaudiocvgatepitch
3 inputs · 1 outputs · 5 params

inputs

idcablewhat it does
audioaudioThe signal to be filtered — typically an oscillator, a drum voice, or a submix. It is fed to all three filter sections in parallel; you hear whichever one the mode control selects.
audio signal
cutoffcvCutoff CV. The value is scaled (and, at negative settings, inverted) by the Cutoff CV knob, then applied EXPONENTIALLY by the DSP: a full-scale +1 at depth +1 lifts the corner five octaves above the knob, −1 drops it five octaves below, and the result is clamped to the 20 Hz–20 kHz window (so from the 1000 Hz default the upward reach is really about 4.3 octaves before it hits the ceiling). Set depth to 0.2 for a one-octave envelope sweep. The mapping lives in the Faust source, so no external scaling stage is needed — but note the value is smoothed by a ~7 Hz one-pole, which is what keeps stepped sequencer CV click-free and what makes this a modulation input rather than an FM input.
control voltage (CV); modulates cutoff (summed directly (the destination DSP scales it))
rescvResonance CV. Scaled (and optionally inverted) by the Res CV knob, then ADDED to the resonance value on its own 0..0.99 scale and clamped there — so a positive CV opens the peak up and a negative one closes it back toward flat, and no amount of CV can push past the 0.99 maximum. Like the cutoff path it is smoothed at ~7 Hz, so it tracks envelopes and LFOs, not audio.
control voltage (CV)

outputs

idcablewhat it does
audioaudioThe filtered signal for the selected mode. The passband sits at unity gain, so a low-resonance lowpass is roughly level with the input while a high-resonance setting adds a peak of up to about 26 dB at the corner — watch the level going into the next stage. Bandpass is the exception: its whole output scales with Q, so at low resonance it is both broad and quiet, and it gets louder and narrower as you turn resonance up.
audio signal

params

idlabelrangedefaultcurve
cutoffCutoff20..20000Hz1000log
resonanceRes0..0.990.1linear
modeMode0..20discrete
cutoff_cv_amtCutoff CV-1..11linear
res_cv_amtRes CV-1..11linear

controls

controlwhat it does
CutoffThe corner (lowpass/highpass) or centre (bandpass) frequency, 20 Hz to 20 kHz on a log taper so the musically-useful range spreads evenly across the travel. This is the knob you sweep; everything else on the module exists to shape what that sweep does.
Cutoff CVAttenuverter for the cutoff CV jack: how far, and in which direction, a patched modulator throws the sweep. At +1 a full-scale CV covers the whole ±5-octave range; at 0.2 it is about ±1 octave; at 0 the jack is muted; negative values invert the modulator, so a rising envelope closes the filter instead of opening it. This is the trim you reach for straight after patching an envelope in — without it a plain 0..1 envelope asks for five octaves and simply pins the cutoff at the ceiling.
ModeThe filter character, a three-position switch: 0 = LOWPASS (keeps lows, rolls off above cutoff at 12 dB/octave — the default subtractive-synthesis voice), 1 = HIGHPASS (keeps highs, thins out bass and rumble; it is built as input-minus-lowpass, so its deep stopband tapers at 6 dB/octave rather than 12), 2 = BANDPASS (keeps only the region around cutoff, 6 dB/octave skirts on both sides — a narrow, nasal, telephone-ish slice that tightens as resonance rises). All three sections run continuously and the switch just picks one, so a change lands instantly with no crossfade.
Res CVAttenuverter for the res CV jack, same idea on the resonance scale: +1 lets a full-scale CV cover the entire 0..0.99 range, smaller values give a subtler swell, 0 mutes the jack, and negative values invert so a rising modulator damps the peak instead of sharpening it. Pair a slow LFO here with a little cutoff modulation for the classic sweeping-formant motion.
ResEmphasis at the cutoff frequency, 0 to 0.99, mapped internally to Q = res × 20 + 0.7. At 0 the response is the plain gentle 12 dB/octave slope; turning it up narrows and lifts the peak at the corner to about +26 dB at maximum, which is where the classic vocal/formant quality and the squelchy sweep come from. Two things worth knowing: the passband does NOT drop as you raise it (unlike a ladder filter), so high resonance is a real level increase into the next stage; and this design does not self-oscillate — at maximum it rings hard but always needs an input signal.

source

filter.ts on GitHub.

Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo