ComfyUI Node

(SP) Filter

The pack's plainest, most useful filter

By c0ffymachyne·Created 2 years ago·Updated about a year ago· 22
(SP) Filter
  • audio_input
  • audio
  • sample_rate
cutoff0.50
filter_typelowpass
q_factor0.71

Every audio pipeline needs a broom, and (SP) Filter is this pack's. It's a classic four-way filter - lowpass, highpass, bandpass, bandstop - that does exactly what it says on the tin and gets out of the way. If a PaulStretch pad is wallowing in sub-bass rumble, or a TTS voice is full of 12 kHz hiss, this is the node that sweeps it out before anything else gets a chance to process it.

The mechanism is boring in the best way: standard biquad filters from torchaudio's cookbook (lowpass_biquad, highpass_biquad, bandpass_biquad, band_biquad). Nothing exotic, nothing to debug. One design choice is worth knowing about before you start turning knobs, though.

The two inputs that behave differently than you expect

  • cutoff - this is not a frequency in Hz. It's normalized 0.0–1.0, and the node maps it logarithmically from 20 Hz up to just below Nyquist (half your sample rate). The log mapping means 0.5 isn't halfway through your hearing range - it lands way down low - and small changes near the top matter more. Expect to spend most of your time in the 0.1–0.4 range for typical 44.1 kHz audio, and yes, this is the thing that trips people up on the first try.
  • filter_type - the dropdown: lowpass, highpass, bandpass, bandstop. Default lowpass, which is what you'll use most.
  • q_factor - the bandwidth control, default 0.707 (a Butterworth-ish neutral response). Lower Q gives a wider, gentler slope; higher Q narrows in and rings.

On the way out you get two outputs: audio (the filtered result) and sample_rate (an INT passthrough of the input's rate). The sample_rate output is handy if you need to know what rate you're working at downstream without guessing.

What it's actually for

Use it as a cheap highpass to kill the sub-bass mud that PadSynth and PaulStretch generate by default - both make pads that eat up headroom below 80 Hz for no musical reason. Use the bandstop to notch out a specific resonant frequency in a sample. Use the bandpass as a crude telephone effect for a bit of character.

One honest warning: it's not surgical. A single biquad is a gentle slope, not a brick wall, so don't expect to fully remove a nearby frequency - expect to tame it. For surgical cuts you'd reach for the 3-band EQ's mid band instead. And like every processor in this pack, it measures input loudness in LUFS and normalizes the output back to the same level, so filtering won't punch your volume around while you're comparing settings.

Installing it

ComfyUI Manager → "Install Custom Nodes" → search ComfyUI Signal Processing, or:

cd ComfyUI/custom_nodes
git clone https://github.com/c0ffymachyne/ComfyUI_SignalProcessing

then restart ComfyUI. Dependencies come from requirements.txt (scipy, pyfar, torchaudio, pyloudnorm, cupy-cuda11x, ...) - Manager installs them for you. The repo calls itself a work in progress, and because the pack imports the CuPy-based Limiter at startup, a CUDA/cupy version mismatch is the most common way the entire pack refuses to load. Fix that and Filter is the first node you'll actually use.

CategorySignal Processing

Inputs (4)

NameTypeDefaultDescription
audio_inputAUDIO
cutoffFLOAT0.500–1
filter_typeCOMBOlowpass4 options: lowpass, highpass, bandpass, bandstop
q_factorFLOAT0.710.1–5

Outputs (2)

NameTypeDescription
audioAUDIO
sample_rateINT