Audio Filter β‘π ‘π π £π
Apply a frequency filter chain to audio inside ComfyUI
- audio
- filters
- AUDIO
ComfyUI can move audio around fine - load it, save it, feed it into ACE-Step or a lip-sync node - but "cut everything below 150Hz" or "notch out that 60Hz hum" isn't something the stock nodes give you. Audio Filter is that missing piece. It's a plain application node: it doesn't define the filter itself, it just takes a filter spec you've already built and runs your audio through it.
That split matters. This node has exactly two required inputs - audio and filters - and one output. The actual filter definition (what frequencies, what kind of cut, what order) is assembled upstream, in the pack's own Audio/FrequencyBands family. Audio Filter's whole job is to be the last step in the chain: take the finished filter object and apply it.
How it works
Under the hood this is a standard digital filter application - the filters input is a FREQUENCY_FILTER, a structured object rather than a raw number, so ComfyUI enforces that it can only come from another node in this pack that actually produces one. You build your band(s) upstream, wire the result into filters, wire your source into audio, and get filtered AUDIO out. It's a pure transform - no state, no side effects - so you can drop it anywhere in an audio chain: right after a loader to clean up a recording, mid-pipeline before a mixdown, or between stages of an ACE-Step music workflow.
Inputs and outputs
audio(required,AUDIO) - your source clip.filters(required,FREQUENCY_FILTER) - the filter definition, built elsewhere in the Audio/FrequencyBands nodes in this same pack. This is the one beginners trip on: you can't type a cutoff frequency directly into this node.- Output - a single
AUDIO, ready to feed into whatever plays, saves, or further processes it.
There's no strength slider, no wet/dry mix here - that kind of control lives on whatever node built the FREQUENCY_FILTER in the first place. Audio Filter itself is deliberately dumb, which is the point: it's the generic "apply this" step so the actual filter design work happens once, upstream, and can be reused.
Installing it
Grab it through ComfyUI Manager - search RyanOnTheInside - or clone it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
Then pip install -r requirements.txt inside the cloned folder before restarting ComfyUI. The pack's audio tools lean on librosa and related analysis libraries under the hood, so skipping that install step is the single most common reason these nodes fail to import - you'll see a red node or an import error in the console rather than a working widget.
Common issues
The type mismatch is the recurring snag: filters wants a FREQUENCY_FILTER, and if you try to wire in anything else - a float, a different audio-band node's output - ComfyUI will simply refuse the connection. That's usually a sign you're missing the upstream node that actually builds the filter spec, not a bug in this one.
Beyond that, this is one of the simpler nodes in the pack, so most of what bites people is generic to the whole install: if any RyanOnTheInside node is missing or red on startup, it's almost always the Python dependencies, not this specific node. Reinstall the requirements before assuming the node itself is broken - the pack's own guidance after the 2.0 rewrite is that if updates through ComfyUI Manager stop landing cleanly, don't patch around it; uninstall the folder entirely and reclone rather than fighting a half-updated install.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Input audio to be filtered | |
| filters | FREQUENCY_FILTER | Frequency filters to be applied |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | β |