Sixty filter classes, from a one-pole smoother to full virtual-analogue ladder models. This page is a map: which family to reach for, and what each one is actually good at.

1. Using a filter

Every filter is a UGen that takes an input signal and returns a modified one, so the chuck operator is all you need:

"A sawtooth through a Moog-style low-pass filter"
voice := SawOsc new => MoogVcf new.

dsp := voice stereo asDsp.
dsp init.
dsp start.
dsp displayUI.
dsp stop.

Because a filter's cutoff is an ordinary setter, it accepts a number, another UGen or a symbol — which is how filter envelopes and auto-wah effects are built. See Envelopes & Modulation §4.3.

1.1 The shared setters

Filter controls come from the PhFilterSetter trait, so they are consistent across the family. Several are synonyms, present because different FAUST modules name the same thing differently:

SetterMeaning
freq: / frequency: / fr:Corner or centre frequency, in hertz
cutoff: / cutoffFreq:Cutoff frequency — the same idea, different naming
q:Quality factor: resonance sharpness
res:Resonance, where the module expresses it as an amount rather than a Q
gain:Output gain, or band gain on the EQ sections
aN:Filter coefficient, on the primitive sections
If a setter is not understood Not every filter composes the whole trait. Instantiate it, call traceAllParams after init, and read off the names it actually exposes — see Parameters & Control §3.

2. Virtual analogue: the MKO family

MKOFilter and its eleven subclasses are digital models of famous analogue filter circuits — the "MKO" being Moog, Korg and Oberheim. These are the filters to reach for when you want character rather than neutrality: they distort pleasantly when driven, and their resonance behaves the way players expect.

ClassModelsCharacter
MoogVcfMoog transistor ladderThe classic warm low pass; the default choice
MoogLadderMoog ladder, four pole24 dB/octave, strong resonance
MoogHalfLadderMoog ladder, two pole12 dB/octave, gentler slope
DiodeLadderDiode ladder (TB-303 lineage)Acidic, squelchy at high resonance
Korg35LPFKorg MS-10/MS-20 low passAggressive, screams when resonant
Korg35HPFKorg MS-10/MS-20 high passThin and biting
OberheimOberheim SEM, multimodeSmooth, all outputs at once
OberheimLPFSEM low passCreamy, less resonant bite than Moog
OberheimHPFSEM high passClean high pass
OberheimBPFSEM band passVocal, useful for formant-like sweeps
OberheimBSFSEM band stopNotch; phaser-like when swept
"An acid line wants the diode ladder and a lot of resonance"
acid := SawOsc new => (DiodeLadder new cutoff: 600; q: 0.9).
Resonance and level These models add gain at the resonant peak. High q: values can push a signal well past full scale even when the input was quiet. Lower the input, or put a limiter after the filter — see Effects, Reverbs & Dynamics.

3. State-variable filters

PhStateVariableFilter and its five subclasses are clean, well-behaved and efficient. Where the MKO family gives colour, these give control: predictable slopes, stable behaviour under fast modulation, and every response from the same topology.

ClassResponse
PhSvfLpLow pass
PhSvfHpHigh pass
PhSvfBpBand pass
PhSvfNotchNotch / band reject
PhSvfPeakPeaking
The right default for modulation If a filter's cutoff is being swept quickly — by an envelope, an LFO or an audio-rate signal — start with the state-variable family. It stays stable where the analogue models can misbehave.

4. Resonators

ResonatorFilter and its subclasses are tuned, narrow filters — closer to a struck bar than to a tone control. At high resonance they ring at their centre frequency, which makes them the basis of modal synthesis.

ClassResponse
PhResonLpResonant low pass
PhResonHpResonant high pass
PhResonBpResonant band pass — the classic ringing filter

The closely related PhModeFilter — filed under physical models rather than filters — is a resonator parameterised by decay time (t60:) instead of Q, which is far more musical when you are modelling a physical object. See Synthesis §4.

5. Butterworth low and high pass

ButterworthLPHP provides Lowpass and HighPass: flat in the passband, no resonance, no colour. These are the filters you use when you want to remove something rather than shape it — cleaning up rumble below an instrument, or taking hiss off the top.

"Remove everything below 80 Hz before it reaches the mix"
cleaned := source => (HighPass new freq: 80).

6. Shelves and parametric EQ

Equalisation sections boost or cut a region without removing it entirely — the tool for balance rather than for sound design.

ClassUse
PhLowShelfBoost or cut everything below a corner frequency
PhHighShelfBoost or cut everything above a corner frequency
PhPeakEqParametric peaking band
PhPeakEqCqConstant-Q peaking band — bandwidth stays proportional as you sweep
PhPeakEqRmPeaking band specified by frequency limits rather than Q
Constant Q, and why it matters With a plain peaking filter, sweeping the centre frequency also changes how wide the affected region sounds. PhPeakEqCq keeps the bandwidth proportional to the frequency, so a sweep sounds even across the spectrum.

7. Comb and allpass filters

CombFilters and its eleven subclasses delay a signal and mix it back with itself, producing a comb-shaped response — regularly spaced peaks and notches. They are the building blocks of reverbs, flangers, choruses and Karplus–Strong strings.

ClassType
Ff_Comb, FfCombFilter, Ff_FCombFeed-forward comb — notches, no ringing
Fb_Comb, FbCombFilter, Fb_FCombFeedback comb — resonant peaks, rings
FfbCombFilterCombined feed-forward and feedback
Allpass_CombAllpass comb — flat magnitude, altered phase
Allpass_FComb, Allpass_FComb1a, Allpass_FComb5Fractional-delay allpass variants

The setters come from PhCombFilterSetter: del: and intDel: for delay length, b0:, b: and bM: for the coefficients.

Allpass filters are for phase An allpass leaves the magnitude spectrum untouched and changes only phase, which sounds like nothing on its own. Their purpose is to diffuse a signal inside a larger network — which is why every reverb is full of them.

8. One-pole, one-zero and building blocks

Beneath the named filters are the primitive sections, useful when you are building a filter rather than using one:

ClassRole
PhPoleOne-pole section — the simplest low pass
PhZeroOne-zero section
PhOneZeroOne-zero with a settable coefficient
PhIIRGeneral infinite impulse response filter
PhLpTau, PhLpT19, PhLpT60Low pass specified by time constant rather than frequency
PhLptNNth-order low pass
PhAvgRect, PhAvgTau, PhAvgT19, PhAvgT60Averaging filters — envelope following and level detection
Time constants, not frequencies The Tau, T19 and T60 variants are specified by how long they take to settle rather than by a corner frequency. That is the natural way to think about a smoother or an envelope follower, and it is why the same naming appears on the compressors.

9. Utility filters

ClassRole
DcBlocker, DcBlockerAt, PhDcBlockerAtRemove DC offset — worth adding after any waveshaper or asymmetric process
Integrator, PhIntegratorIntegrate a signal over time
A habit worth having Saturation, rectification and many physical models introduce DC offset, which wastes headroom and can thump when a patch starts. A DcBlocker at the end of the chain costs almost nothing and prevents the problem.

10. Choosing a filter

You wantReach for
A classic synth sweepMoogVcf, or DiodeLadder for acid
Fast modulation without artefactsThe PhSvf family
To remove rumble or hissHighPass, Lowpass
To rebalance a mixPhPeakEqCq, PhLowShelf, PhHighShelf
Something that rings like an objectPhResonBp, PhModeFilter
Flanging, chorus, reverb ingredientsThe comb and allpass family
Level detection or smoothingPhAvgT60, PhLpT60, smoo

11. Where to go next

DocumentWhat it covers
Envelopes & ModulationDriving a cutoff with an envelope or LFO.
Effects, Reverbs & DynamicsWhat comb filters become when you build them up.
Synthesis TechniquesFilters in the context of complete patches.
UGen LibraryThe full class list, including everything not named here.

12. Troubleshooting

The filter distorts as soon as I raise resonance

Resonant gain is pushing the signal past full scale. Lower the input level — §2.

cutoff: is not understood by my filter

That module names it differently. Try freq: or fr:, and confirm with traceAllParams — §1.1.

Sweeping the cutoff produces zipper noise

The control is stepping. Add smoo to the control signal — see Envelopes §5.

A fast envelope on the cutoff makes the filter squeal or blow up

Some analogue models are unstable under very fast modulation. Move to the state-variable family — §3.

My patch thumps when it starts, and the meters sit off-centre

DC offset. Add a DcBlocker at the end of the chain — §9.

The comb filter does nothing audible

If it is an allpass, that is expected — allpass filters change phase, not magnitude. §7.