MD: Mastering EQ
Filters, shelves, and four parametric bands
- audio
- AUDIO
If your AI-generated audio sounds muddy, harsh, or boomy, the fastest fix is EQ - and MD_Mastering_EQ is a proper mastering EQ built as a ComfyUI node. It covers the full toolkit: a lowpass and highpass for cleaning the extremes, high and low shelves for tonal shaping, and four parametric bell filters for surgical work. It's the second stage in the MD mastering chain (after gain, before compression), and it's where you spend most of your "why does this sound bad" time.
This is one of the nodes you'll actually reach for rather than just admiring. The README positions these audio tools as making AI audio "broadcast-ready," and honestly, a simple highpass is the single highest-value fix for most AI music - these models love to dump useless sub-bass energy that eats headroom and muddies everything.
How it works
The node is a wrapper around a DSP core that processes the waveform in-place. Each filter is individually enabled, so you build a chain out of only what you need: two Butterworth-style filters (lowpass/highpass) with adjustable order for the slope, two shelves for broad tonal balance, and four parametric bands with gain, frequency, and Q. Filters are processed in order on the audio samples, and the result comes out as a new AUDIO dict with the sample rate preserved.
The inputs that matter
- enable_highpass / highpass_freq - the big one. Cut everything below 20–40 Hz on AI music and you instantly get cleaner low end and more headroom. Order sets the slope steepness.
- enable_lowpass / lowpass_freq - kills harshness and aliasing up top; 18 kHz is a safe de-esser for gritty AI output.
- eq_high_shelf_gain_db / enable_low_shelf_eq - broad brightness or warmth. A gentle +1 to +2 dB high shelf is the classic "AI audio sounds dull" cure; a low shelf cut tames boominess.
- enable_param_eq1–4 - the surgical bands. Each has gain (-24 to +24 dB), frequency, and Q. Use them for the specific resonant frequency your model loves to repeat, not for broad moves.
Each band is off by default, so an untouched node is a pass-through - safe to drop into a chain before you've dialed anything in. Output is a single AUDIO to continue the chain.
Installing
Part of MD Nodes; install once, use across the pack:
cd path/to/ComfyUI/custom_nodes
git clone https://github.com/MDMAchine/ComfyUI_MD_Nodes.git
cd ComfyUI_MD_Nodes
pip install -r requirements.txt
Or ComfyUI Manager → MD Nodes → install → restart. The EQ DSP ships in the pack's core; the requirements file's audio libraries (soundfile, librosa) back the surrounding load/save nodes.
Common issues
Two mistakes to avoid. First: don't stack broadband cuts - one good highpass plus one gentle shelf beats five bands fighting each other. Second, remember this EQ has no safety on the output; a +24 dB parametric band on something already loud is clipping waiting to happen. If you're working blind, put a limiter or LUFS check downstream (the same pack has both) rather than boosting and hoping. And if your audio is fine in the low-mids but consistently harsh, check whether your VAE decode is aliasing before you blame the mix - that's a latent-side problem, not an EQ problem.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | AUDIO INPUT | |
| sample_rate | INT | 441008000–192000 | SAMPLE RATE • Purpose: Fallback sample rate if not provided by audio dict. |
| enable_lowpass | BOOLEAN | false | ENABLE LOWPASS |
| lowpass_freq | FLOAT | 18000.0020–22000 | LOWPASS FREQ |
| lowpass_order | INT | 41–8 | LOWPASS SLOPE |
| enable_highpass | BOOLEAN | false | ENABLE HIGHPASS |
| highpass_freq | FLOAT | 20.0010–1000 | HIGHPASS FREQ |
| highpass_order | INT | 41–8 | HIGHPASS SLOPE |
| eq_high_shelf_gain_db | FLOAT | 0.00-24–24 | HIGH SHELF GAIN |
| eq_high_shelf_freq | FLOAT | 12000.001000–22000 | HIGH SHELF FREQ |
| enable_low_shelf_eq | BOOLEAN | false | ENABLE LOW SHELF |
| eq_low_shelf_gain_db | FLOAT | 0.00-24–24 | LOW SHELF GAIN |
| eq_low_shelf_freq | FLOAT | 75.0020–1000 | LOW SHELF FREQ |
| enable_param_eq1 | BOOLEAN | false | ENABLE BAND 1 |
| param_eq1_gain_db | FLOAT | 0.00-24–24 | — |
| param_eq1_freq | FLOAT | 55.0020–22000 | — |
| param_eq1_q | FLOAT | 2.000.1–10 | — |
| enable_param_eq2 | BOOLEAN | false | ENABLE BAND 2 |
| param_eq2_gain_db | FLOAT | 0.00-24–24 | — |
| param_eq2_freq | FLOAT | 125.0020–22000 | — |
| param_eq2_q | FLOAT | 2.000.1–10 | — |
| enable_param_eq3 | BOOLEAN | false | ENABLE BAND 3 |
| param_eq3_gain_db | FLOAT | 0.00-24–24 | — |
| param_eq3_freq | FLOAT | 1250.0020–22000 | — |
| param_eq3_q | FLOAT | 1.000.1–10 | — |
| enable_param_eq4 | BOOLEAN | false | ENABLE BAND 4 |
| param_eq4_gain_db | FLOAT | 0.00-24–24 | — |
| param_eq4_freq | FLOAT | 5000.0020–22000 | — |
| param_eq4_q | FLOAT | 1.000.1–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |