Parametric EQ (CRT)
An eight-band parametric EQ, right inside your node graph
- audio
- AUDIO
Most AI-generated audio - voiceovers, synth vocals, extracted video soundtracks - comes out of the box with the same problems: boxy low-mids, sibilant highs, a rumble floor you can feel more than hear. Fixing that means an EQ, and the Parametric EQ (CRT) is a real one, not a toy: eight fully-configurable bands with proper filter math, all inside a ComfyUI node.
It sits in the CRT-Nodes audio category alongside the Tube Compressor, the Mono to Stereo converter, and the audio preview - a rare thing in ComfyUI, which is still mostly image-first. If you've got an audio branch at all, this is the node that makes it sound intentional.
How it works
Under the hood it builds eight EQBand filters from hand-designed biquad coefficients - each band's frequency, gain, and Q get turned into filter coefficients in Python, and the audio is processed with scipy's fast lfilter. No heavyweight DSP library, no GPU needed, just real filter math per channel. Each band is individually switchable and has five controls:
- type -
bell,low_pass,high_pass,low_shelf,high_shelf,band_pass, ornotch - frequency (20 Hz – 20 kHz)
- gain (−30 to +30 dB)
- q (0.1–100) - how narrow or wide the band is
- enabled - kill a band without deleting its settings
The node rebuilds its filter chain when the sample rate changes, which is a detail that matters: feed it a 48 kHz clip after running at 44.1 kHz and you'll still get correct filters instead of subtly wrong ones. There's also a global output_gain (make-up gain after the filters) and a bypass switch so you can A/B the processed audio against the source instantly.
Inputs that matter
- audio - the AUDIO tensor to process.
- sample_rate - default 44100; match it to your clip's actual rate.
- output_gain - pull it down if the summed bands push you into clipping.
- bypass - the A/B toggle; leave it off in production, keep it handy while tuning.
- band_1 through band_8 - each with the five controls above. For a beginner: start with one or two bands, not all eight.
The moves that actually help
- Kill the rumble: band with
high_passat ~80–100 Hz on a vocal. - Tame sibilance: a
bellaround 6–8 kHz with negative gain. - De-box vocals: negative
bellaround 250–400 Hz. - Polish the top end: gentle
high_shelfboost above 10 kHz.
If you only ever touch one or two bands, you're still ahead of 90% of AI audio.
Install and gotchas
Pack-level: ComfyUI Manager → search CRT-Nodes → install and restart, or clone into custom_nodes. This node specifically leans on scipy, which is in the pack's requirements.txt (and almost always already present in a stock ComfyUI install) - if the audio category errors on load, pip install -r requirements.txt is the usual fix, and the pack will skip the audio nodes rather than crash ComfyUI.
The real-world gotcha is clipping: stacking boosts across several bands can push a 0dBFS track over. Watch output_gain, or run your audio through the Tube Compressor afterward. And remember the sample rate - if your EQ sounds like it's tuned to the wrong track, check that sample_rate matches the clip.
Inputs (44)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| sample_rate | INT | 441008000–192000 | — |
| output_gain | FLOAT | 0.0-30–30 | — |
| bypass | BOOLEAN | false | — |
| band_1_enabled | BOOLEAN | true | — |
| band_1_type | COMBO | 7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1 | |
| band_1_frequency | FLOAT | 1000.0020–20000 | — |
| band_1_gain | FLOAT | 0.00-30–30 | — |
| band_1_q | FLOAT | 1.000.1–100 | — |
| band_2_enabled | BOOLEAN | true | — |
| band_2_type | COMBO | 7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1 | |
| band_2_frequency | FLOAT | 1000.0020–20000 | — |
| band_2_gain | FLOAT | 0.00-30–30 | — |
| band_2_q | FLOAT | 1.000.1–100 | — |
| band_3_enabled | BOOLEAN | true | — |
| band_3_type | COMBO | 7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1 | |
| band_3_frequency | FLOAT | 1000.0020–20000 | — |
| band_3_gain | FLOAT | 0.00-30–30 | — |
| band_3_q | FLOAT | 1.000.1–100 | — |
| band_4_enabled | BOOLEAN | true | — |
| band_4_type | COMBO | 7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1 | |
| band_4_frequency | FLOAT | 1000.0020–20000 | — |
| band_4_gain | FLOAT | 0.00-30–30 | — |
| band_4_q | FLOAT | 1.000.1–100 | — |
| band_5_enabled | BOOLEAN | true | — |
| band_5_type | COMBO | 7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1 | |
| band_5_frequency | FLOAT | 1000.0020–20000 | — |
| band_5_gain | FLOAT | 0.00-30–30 | — |
| band_5_q | FLOAT | 1.000.1–100 | — |
| band_6_enabled | BOOLEAN | true | — |
| band_6_type | COMBO | 7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1 | |
| band_6_frequency | FLOAT | 1000.0020–20000 | — |
| band_6_gain | FLOAT | 0.00-30–30 | — |
| band_6_q | FLOAT | 1.000.1–100 | — |
| band_7_enabled | BOOLEAN | true | — |
| band_7_type | COMBO | 7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1 | |
| band_7_frequency | FLOAT | 1000.0020–20000 | — |
| band_7_gain | FLOAT | 0.00-30–30 | — |
| band_7_q | FLOAT | 1.000.1–100 | — |
| band_8_enabled | BOOLEAN | true | — |
| band_8_type | COMBO | 7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1 | |
| band_8_frequency | FLOAT | 1000.0020–20000 | — |
| band_8_gain | FLOAT | 0.00-30–30 | — |
| band_8_q | FLOAT | 1.000.1–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |