Nodes/MKRShift_Nodes/Audio EQ 3-Band
ComfyUI Node

Audio EQ 3-Band

Three-band tone shaping when you don't want to open a DAW

By criskb·Created 7 months ago·Updated 5 months ago· 0
Audio EQ 3-Band
  • audio
  • audio
  • output_path
  • duration_sec
  • summary
low_gain_db0.0
mid_gain_db0.0
high_gain_db0.0
output_gain_db0.0
low_mid_hz250
mid_high_hz3000
normalize_peakfalse
output_formatauto
filename_prefixMKR_audio_eq3
subfolder
overwritefalse
filename_label

Most AI-generated audio arrives with one of two problems: it's muffled (too much low-mid, no air) or it's harsh (nasty top end from over-crisp TTS). MKRAudioEQ3Band is the quick fix - a low/mid/high tone control that lives inside the graph so you can EQ a generated voice or soundtrack the same way you'd reach for a three-band knob on a cheap mixer. It's not a surgical parametric EQ; it's the "make it brighter / take the boom out" move, done in numpy.

It sits in the FX branch of the MKRShift_Nodes audio set, which also includes the limiter, bitcrush, and stereo width. A typical finishing chain is: MKRAudioEQ3BandMKRAudioLimiter → normalize.

How it works

The node does an FFT per channel, applies a gain curve across the frequency bins, and inverse-transforms back to the time domain. Two crossover points - low_mid_hz (default 250 Hz) and mid_high_hz (default 3000 Hz) - split the spectrum into three bands, and the three gains set each band's level. The transitions between bands are smoothed over a ~20% window around each crossover so you don't get zipper artifacts or phase-y edges. output_gain_db trims the overall level afterward (useful because boosting a band pushes peaks up), and normalize_peak rescales to about −0.2 dB so your boosted result doesn't clip.

Because it's FFT-based rather than filter-bank based, it's a shelf EQ: the whole low region gets one gain, the whole high region another, with no resonance knobs. That's a feature for this use case - nothing to fiddle, no ringing to fight.

Inputs that matter

  • audio - MKR_AUDIO payload, waveform tensor, or file path (* input).
  • low_gain_db, mid_gain_db, high_gain_db - −24 to +24 dB each. The three knobs. +3 to +6 on high_gain_db is the classic "add air to a muffled voice" fix; −3 to −6 on low_gain_db tames boom.
  • low_mid_hz / mid_high_hz - the crossovers. Leave the defaults (250/3000) for voice and you'll rarely go wrong.
  • output_gain_db, normalize_peak - level trim / safety.
  • The standard save block: output_format, filename_prefix, subfolder, overwrite, optional filename_label.

Outputs: audio (MKR_AUDIO), output_path, duration_sec, summary.

Install

ComfyUI Manager (search "MKRShift Nodes"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

Restart. The EQ itself is pure numpy - ffmpeg only matters if you write mp3/flac/ogg. No models.

Common issues

Two things get people. First, this is a shelf EQ with two crossovers, not a full band EQ - if you boost low_gain_db by +12 dB you're boosting everything below 250 Hz, including sub rumble, so don't expect a kick-drum bell curve. Second, normalize_peak is off by default, so big boosts can clip; turn it on (or add the limiter after) once you're past ±6 dB of gain. And it only has two crossovers because that's the design - three bands, two hinges, keep your expectations at "mixer tone knob."

CategoryMKRShift Nodes/Media/Audio/FX

Inputs (13)

NameTypeDefaultDescription
audio*
low_gain_dbFLOAT0.0-24–24
mid_gain_dbFLOAT0.0-24–24
high_gain_dbFLOAT0.0-24–24
output_gain_dbFLOAT0.0-24–24
low_mid_hzFLOAT25020–4000
mid_high_hzFLOAT3000200–16000
normalize_peakBOOLEANfalse
output_formatCOMBOauto5 options: auto, wav, mp3, flac, ogg
filename_prefixSTRINGMKR_audio_eq3
subfolderSTRING
overwriteBOOLEANfalse
filename_labeloptSTRING

Outputs (4)

NameTypeDescription
audioMKR_AUDIO
output_pathSTRING
duration_secFLOAT
summarySTRING