ComfyUI Node

EQ

Manual Bands, or Let It Fit a Gentle Tone Match to Your Mix

By jplenio·Created a day ago·Updated about 13 hours ago· 2
EQ
  • audio
  • reference
  • audio
  • report
◄mode▾►

What it is

Plenio's EQ is a real parametric equaliser - up to eight bands with a live response curve - plus a tone-matching mode that does the fiddly part for you. It runs on the CPU in 64-bit float, which means the Enhance & Master path works on a machine with no GPU at all.

Two things make it more than a mixing toy. The first is that it's honest: there's no hidden normalisation, no auto-gain sneaking your level around while you're listening. The second is that the match mode is bounded. Its job is a gentle tilt, not a repair job - the pack's own preset library leads with "YuE2 – Smooth highs" and describes it as static tone shaping, not artifact repair. Believe that.

How it works

The mode picker decides everything:

  • flat - no filtering at all. Bit-identical passthrough, by design. Useful as an explicit "off" when you're A/B-ing.
  • manual - your bands, edited on the curve in the node's UI. They're stored as JSON (plenio.eq/1) and validated: frequencies 20 Hz–20 kHz and at most 0.45× the sample rate, band gain ±12 dB, Q 0.2–10, shelf slope 0.25–1, pre-amp ±24 dB.
  • match preset - the pack's tone-match recipes: warm, bright and reference variants, from subtle mastering to broad match. The reference recipes need the optional reference input connected.
  • custom match - you set the fit: target (warm, bright or reference), strength (0–1, default 0.35), max_gain_db (default 2.0), max_bands (default 4), and the advanced frequency limits min_hz / max_hz (40 Hz to 16 kHz by default).

Under the hood, the filters are biquads from the RBJ Audio EQ Cookbook - peak, low/high shelf, low/high-pass and notch. Match mode measures the audio's long-term spectrum (1/6-octave smoothing) and compares it with a target: a gentle tilt around 1 kHz (±0.75 dB/octave for warm and bright, relative to your own audio, not to some absolute curve) or the spectrum of your reference recording with the level difference removed first. A least-squares fit then places up to max_bands peak filters, with strength scaling the correction and max_gain_db bounding the summed curve. The report shows you the error before and after - the closest thing to a receipt this kind of processing usually gets.

reference is audio in, so it comes from a Load Audio node with your chosen reference track. Matching against a reference is the most useful trick here and also the most misused: level-matched spectrum comparison is not "make my song sound like that song", and it won't fix arrangement, performance or a bad render.

Inputs and outputs

Required: audio (every item of a batch gets equalised) and mode. Optional: reference. Outputs: audio - same rate, same length - and report (mode, the applied bands, and the match result). The report is worth wiring into Export Release, so the release record shows what tone shaping a song actually got.

Install

# ComfyUI Manager → search "Plenio Music Production System" → Install → restart
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/jplenio/Plenio-Music-Production-System

ComfyUI 0.37.0+, no Python packages installed by the pack. The 4 · Enhance & Master template is EQ → Loudness & Dynamics → Export with no GPU needed, which makes it the cheapest way to try this node on a file you already have.

Common issues

  • A boost made it clip. EQ doesn't normalise, so raising a band raises the peak. Keep Loudness & Dynamics after it - the export will warn about samples above full scale, and that warning means exactly what it says.
  • The match barely did anything. That's the design: default strength 0.35 and a 2 dB gain cap. Push both up if you want a firmer hand, and listen for it turning into a filter sweep.
  • The curve on the node doesn't look like what you heard. It's the backend's computed response for the audio's rate, so it is what you hear - if you disagree, you're probably listening to the pre-EQ signal upstream.
  • Reference match made it worse. Reference matching wants a genuinely comparable recording - same kind of material, similar density. A solo piano reference against a busy rock mix mostly tells the fitter to cut everything.
CategoryPlenio/Mastering

Inputs (3)

NameTypeDefaultDescription
audioAUDIOThe audio to equalise (every item of a batch).
modeCOMBOflat: no change; manual: your bands; match: a proposal fitted to the audio.
referenceoptAUDIOReference recording for the 'reference' target.

Outputs (2)

NameTypeDescription
audioAUDIOThe equalised audio (same rate and length).
reportPLENIO_REPORTMode, the applied bands and the match result.