Audio EQ 3-Band
Three-band tone shaping when you don't want to open a DAW
- audio
- audio
- output_path
- duration_sec
- summary
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: MKRAudioEQ3Band → MKRAudioLimiter → 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_AUDIOpayload, 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 onhigh_gain_dbis the classic "add air to a muffled voice" fix; −3 to −6 onlow_gain_dbtames 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, optionalfilename_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."
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | * | — | |
| low_gain_db | FLOAT | 0.0-24–24 | — |
| mid_gain_db | FLOAT | 0.0-24–24 | — |
| high_gain_db | FLOAT | 0.0-24–24 | — |
| output_gain_db | FLOAT | 0.0-24–24 | — |
| low_mid_hz | FLOAT | 25020–4000 | — |
| mid_high_hz | FLOAT | 3000200–16000 | — |
| normalize_peak | BOOLEAN | false | — |
| output_format | COMBO | auto | 5 options: auto, wav, mp3, flac, ogg |
| filename_prefix | STRING | MKR_audio_eq3 | — |
| subfolder | STRING | — | |
| overwrite | BOOLEAN | false | — |
| filename_labelopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| audio | MKR_AUDIO | — |
| output_path | STRING | — |
| duration_sec | FLOAT | — |
| summary | STRING | — |