Nodes/ComfyUI Signal Processing/(SP) Enhance Harmonics
ComfyUI Node

(SP) Enhance Harmonics

Add sparkle by boosting the harmonics, not the volume

By c0ffymachyne·Created 2 years ago·Updated about a year ago· 22
(SP) Enhance Harmonics
  • audio_input
  • audio
harmonics1,3,5,7,9
mode
base_frequency440.00
gain_db5
Q0.71

A dry synth pad or a quiet voice often sounds "flat" not because it's quiet, but because its upper harmonics are weak - the fundamental carries the pitch, the harmonics carry the life. (SP) Enhance Harmonics finds the harmonics and gives them a boost. It's the "add presence and sparkle" node of the pack, and it's a genuinely useful trick that's easy to overdo.

The mechanism is straightforward: it builds narrow EQ bands at integer multiples of a base frequency and applies gain to each via torchaudio's equalizer_biquad. If your base frequency is 200 Hz and you ask for harmonics 1, 3, 5, it boosts 200, 600, and 1000 Hz. The "enhancement" is really surgical harmonic EQ, which is why it can sound magical on a pad and shrill on a full mix.

The inputs

  • harmonics - a comma-separated string of which harmonic multiples to boost, default 1,3,5,7,9. Odd harmonics (3, 5, 7) are the musical ones for most sources; even harmonics change the timbre more dramatically. Keep the list short.
  • mode - detect base frequency (auto-estimates the pitch of your audio with a pitch detector) or use base frequency (you type it in). Auto is the better default for a single-note pad; manual is safer for a full clip with multiple pitches.
  • base_frequency - used in manual mode, default 440 Hz.
  • gain_db - the boost per harmonic, an INT from 0 to 500, default 5. Here's the trap: 500 dB is nonsense territory (it's a big range on a small idea), and anything past ~12 dB starts sounding broken. Live in the 3–9 dB range.
  • Q - the bandwidth of each harmonic band, 0–1, default 0.707. Lower Q boosts a wider, more forgiving swath; high Q targets a razor-thin band and can ring.

One audio output. And yes - this pack's signature move applies here too: input LUFS is measured and the output is normalized back to match, so boosting harmonics won't just make everything louder and fool your ears.

How to use it without wrecking it

For a PaulStretch pad or a synthesized note, detect base frequency with harmonics 1,3,5,7 at +5–7 dB adds air without changing the pitch. For a voice, boost odd harmonics at +3 dB max - voices are already harmonic-rich and this node can make them harsh fast. And don't use it as a "louder" button; if you just want level, use the Normalizer. If you want the actual frequencies rather than a harmonic series, that's the (SP) Baxandall 3 Band EQ's job.

One formatting gotcha from the code: the harmonics string is parsed with Python's literal_eval per comma-separated item, so it wants plain integers like 1,3,5 - throw in a stray space and an empty entry (1,,3,5) and it'll refuse with a warning.

Installing it

ComfyUI Manager → "Install Custom Nodes" → search ComfyUI Signal Processing, or:

cd ComfyUI/custom_nodes
git clone https://github.com/c0ffymachyne/ComfyUI_SignalProcessing

then restart ComfyUI. Dependencies from requirements.txt (scipy, pyfar, torchaudio, pyloudnorm, cupy-cuda11x, ...) - Manager handles them. The repo is a work in progress; if the pack won't load, the pinned cupy-cuda11x is the usual culprit, so get your CUDA/cupy version aligned and this node loads with everything else.

CategorySignal Processing

Inputs (6)

NameTypeDefaultDescription
audio_inputAUDIO
harmonicsSTRING1,3,5,7,9
modeCOMBO2 options: detect base frequency, use base frequency
base_frequencyFLOAT440.000–20000
gain_dbINT50–500
QFLOAT0.710–1

Outputs (1)

NameTypeDescription
audioAUDIO