Nodes/CRT-Nodes/Parametric EQ (CRT)
ComfyUI Node

Parametric EQ (CRT)

An eight-band parametric EQ, right inside your node graph

By PGCRT·Created 2 years ago·Updated a day ago· 132
Parametric EQ (CRT)
  • audio
  • AUDIO
sample_rate44100
output_gain0.0
bypassfalse
band_1_enabledtrue
band_1_type
band_1_frequency1000.00
band_1_gain0.00
band_1_q1.00
band_2_enabledtrue
band_2_type
band_2_frequency1000.00
band_2_gain0.00
band_2_q1.00
band_3_enabledtrue
band_3_type
band_3_frequency1000.00
band_3_gain0.00
band_3_q1.00
band_4_enabledtrue
band_4_type
band_4_frequency1000.00
band_4_gain0.00
band_4_q1.00
band_5_enabledtrue
band_5_type
band_5_frequency1000.00
band_5_gain0.00
band_5_q1.00
band_6_enabledtrue
band_6_type
band_6_frequency1000.00
band_6_gain0.00
band_6_q1.00
band_7_enabledtrue
band_7_type
band_7_frequency1000.00
band_7_gain0.00
band_7_q1.00
band_8_enabledtrue
band_8_type
band_8_frequency1000.00
band_8_gain0.00
band_8_q1.00

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, or notch
  • 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_pass at ~80–100 Hz on a vocal.
  • Tame sibilance: a bell around 6–8 kHz with negative gain.
  • De-box vocals: negative bell around 250–400 Hz.
  • Polish the top end: gentle high_shelf boost 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.

CategoryCRT/Audio

Inputs (44)

NameTypeDefaultDescription
audioAUDIO
sample_rateINT441008000–192000
output_gainFLOAT0.0-30–30
bypassBOOLEANfalse
band_1_enabledBOOLEANtrue
band_1_typeCOMBO7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1
band_1_frequencyFLOAT1000.0020–20000
band_1_gainFLOAT0.00-30–30
band_1_qFLOAT1.000.1–100
band_2_enabledBOOLEANtrue
band_2_typeCOMBO7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1
band_2_frequencyFLOAT1000.0020–20000
band_2_gainFLOAT0.00-30–30
band_2_qFLOAT1.000.1–100
band_3_enabledBOOLEANtrue
band_3_typeCOMBO7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1
band_3_frequencyFLOAT1000.0020–20000
band_3_gainFLOAT0.00-30–30
band_3_qFLOAT1.000.1–100
band_4_enabledBOOLEANtrue
band_4_typeCOMBO7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1
band_4_frequencyFLOAT1000.0020–20000
band_4_gainFLOAT0.00-30–30
band_4_qFLOAT1.000.1–100
band_5_enabledBOOLEANtrue
band_5_typeCOMBO7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1
band_5_frequencyFLOAT1000.0020–20000
band_5_gainFLOAT0.00-30–30
band_5_qFLOAT1.000.1–100
band_6_enabledBOOLEANtrue
band_6_typeCOMBO7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1
band_6_frequencyFLOAT1000.0020–20000
band_6_gainFLOAT0.00-30–30
band_6_qFLOAT1.000.1–100
band_7_enabledBOOLEANtrue
band_7_typeCOMBO7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1
band_7_frequencyFLOAT1000.0020–20000
band_7_gainFLOAT0.00-30–30
band_7_qFLOAT1.000.1–100
band_8_enabledBOOLEANtrue
band_8_typeCOMBO7 options: bell, low_pass, high_pass, low_shel, high_shel, band_pass, +1
band_8_frequencyFLOAT1000.0020–20000
band_8_gainFLOAT0.00-30–30
band_8_qFLOAT1.000.1–100

Outputs (1)

NameTypeDescription
AUDIOAUDIO