Nodes/ComfyUI-MiniMax-Music-Production-Toolkit/Auto-EQ – Analyze / Propose
ComfyUI Node

Auto-EQ – Analyze / Propose

It proposes the curve and never touches your audio

By jplenio·Created 13 days ago·Updated a day ago· 33
Auto-EQ – Analyze / Propose
  • audio
  • reference_audio
  • eq_settings_json
  • analysis_json
  • info
target_modeReference track
strength_percent50
max_gain_db3.0
max_bands6
min_frequency_hz40.00
max_frequency_hz16000.00
enabledtrue

Why it exists, and what it isn't

AI-generated music comes out of the model at whatever level and tone the model felt like. Before you can master it, you have to know what's actually wrong with the balance - and doing that by ear on a track you wrote ten minutes ago is a good way to lie to yourself.

This node is the measuring half of that job. It analyzes your track's spectrum against a reference (or a simple tilt), and outputs a set of EQ settings you can inspect, edit, and apply. It does not process audio, and the author is careful about that in the node description: it doesn't correct a room, and Warm/Bright tilt are creative choices, not an ideal mastering standard. Read it as "here's a proposal, you decide."

The reason it's here at all, in a ComfyUI pack, is that this community's music tooling has a real gap at the output end. Text-to-music is the part everyone writes about (see the ACE-Step material in the KB - instrumental good, vocals rough); level and tone consistency is what you notice when you actually try to release the file. In-graph mastering chains were the missing piece, which is exactly what this pack's 2.5 release builds out.

How the analysis actually works

It takes a spectral profile of your audio on a log-spaced grid, then subtracts the median level difference from the target. That single step is what makes the output usable: loudness is thrown away and only tonal difference survives, so a quiet reference doesn't make the node ask for 12 dB of gain.

From there it's a fit, not a lookup: strength_percent scales the desired correction, max_gain_db clips it, and the node greedily places up to max_bands parametric peaks, running scipy.optimize.least_squares over frequency, gain and Q for each. Then it verifies the combined response on a dense grid and shrinks band gains if the summed curve overshoots your gain limit. Bands outside your frequency window are excluded rather than treated as missing treble, and frequencies without reliable evidence get zero weight - silence or a narrow-bandwidth source returns "Insufficient reliable spectrum" and an empty proposal rather than nonsense.

In Warm/Bright tilt mode the target is ±0.75 dB per octave around 1 kHz, which is a gentle broadband slope: Warm tilts the top down, Bright tilts it up.

The inputs that matter

audio is your source; the node never modifies it. target_mode picks Reference track, Warm tilt, or Bright tilt - pick Reference track and you must connect reference_audio, or it raises and tells you to. Reference batches must be either one item (applied to everything) or one per source item. strength_percent (default 50) is how much of the measured difference you want corrected; start there and audition, because 100% is chasing a curve, not a sound. max_gain_db (default 3) caps both individual bands and the predicted combined curve. max_bands (default 6) and the min_frequency_hz / max_frequency_hz window (40–16000 by default) keep the proposal broad and boring, which is what you want - this is tone matching, not repair.

enabled defaults on; switch it off and the node emits unity settings and skips analysis entirely, so a workflow with the reference disconnected still runs.

The outputs are three strings: eq_settings_json (the versioned settings object you wire into Parametric EQ – 8 Bands), analysis_json with the measured curves, target delta, predicted response and an accept/reject reason, and info, a one-liner. If a mix sounds worse after Auto-EQ, read analysis_json before you go re-recording anything.

Install and troubleshooting

Manager → search MiniMax Music Production Toolkit, or clone the repo into custom_nodes and run python -m pip install -r requirements.txt with ComfyUI's own interpreter, then restart and hard-refresh. The mastering nodes are pure CPU DSP - no extra VRAM - though the pack needs SciPy for the filter fit.

Two things that catch people: a reference track matched by loudness rather than tone (that's what the median subtraction is for - if your proposal still looks like a bank of gain, check the reference isn't a different genre at a wildly different level), and reaching for Auto-EQ to fix arrangement problems. It flattens a broad tonal offset. It will not un-muddy a bad mix, and it will happily smooth away a deliberate top-end roll-off if you let it.

CategoryMiniMax Music Production Toolkit/mastering

Inputs (9)

NameTypeDefaultDescription
audioAUDIOSource audio to analyze. This node proposes filters without processing the audio.
target_modeCOMBOReference trackReference matches broad tonal balance. Warm/Bright tilt are creative choices, not an ideal mastering standard.
strength_percentFLOAT500–100Fraction of the broad tonal difference to correct. Start at 50% and audition.
max_gain_dbFLOAT3.00.1–6Limits individual gains and the predicted combined curve. Start at 3 dB.
max_bandsINT61–6Maximum number of broad parametric bands, up to six.
min_frequency_hzFLOAT40.0020–1000Lower correction boundary. Frequencies without reliable evidence are excluded.
max_frequency_hzFLOAT16000.001000–20000Upper correction boundary, also limited by source/reference sample rates.
reference_audiooptAUDIOReference track: one item for all sources, or one reference per source batch item.
enabledoptBOOLEANtrueOff skips analysis and emits unity settings; manual EQ in the optimized workflows stays independent.

Outputs (3)

NameTypeDescription
eq_settings_jsonSTRING
analysis_jsonSTRING
infoSTRING