(SP) Filter
The pack's plainest, most useful filter
- audio_input
- audio
- sample_rate
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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_input | AUDIO | — | |
| cutoff | FLOAT | 0.500–1 | — |
| filter_type | COMBO | lowpass | 4 options: lowpass, highpass, bandpass, bandstop |
| q_factor | FLOAT | 0.710.1–5 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| sample_rate | INT | — |