Audio Normalize
It doesn't make quiet audio loud, it stops clipping
- audio
- audio
What it actually does
This is the smallest node in the pack and the one whose name most misleads. Audio Normalize does not normalize your audio in the usual loudness sense. It checks the peak level, and:
- If the peak is above 1.0 (0 dBFS), it scales the whole waveform down so the peak sits at
0.999. - If the peak is at or below 1.0, it leaves the audio completely untouched - a straight clone, no gain applied.
So it's a limiter, not a leveler. Quiet audio stays quiet. Nothing gets louder. If you came here expecting a "make this stem as loud as that stem" node, that's not this, and no amount of staring at the widget will change it.
Why you'd still wire it in
Because separated stems genuinely do come back over 0 dBFS, and 24-bit PCM does not care about your feelings - anything past full scale gets clipped when it's written. Run a stem through this before Save Audio and you're guaranteed a clean file rather than a subtly crackly one.
It's also the safety net when you're comparing models. Two separators of the same track can differ by a few dB, and a level mismatch is the most common reason people pick the wrong one - the louder stem always sounds "better" for the first thirty seconds. A clip guard doesn't fix that, but it stops the file itself from being damaged while you decide.
The MSS Params and VR Params nodes have their own normalize toggles, and if that's all you need, use those - this node is the version you can drop anywhere in a graph, including on audio that never went near a separator.
Inputs and outputs
That's the whole schema:
- Input
audio- one ComfyUIAUDIOstream. - Output
audio- the guarded waveform, same sample rate, same length. Metadata carried on the dict (source path, stem name) survives, because the node copies the dict and only rewrites the waveform.
One detail from the source worth knowing: it works on a clone, so if you fan the same input both into this node and somewhere else, the other branch is unaffected. No in-place mutation surprises.
Install
Part of Comfy-MSS:
cd ComfyUI/custom_nodes
git clone https://github.com/pymss-project/comfy-mss
python -m pip install pymss # ComfyUI's Python env
or ComfyUI Manager → Comfy-MSS → restart. No models involved; the only requirement is that pymss imported cleanly, since the pack loads its ensemble and audio helpers from it.
Gotchas
- The name oversells it. It's a peak guard. Peak > 1.0 → scaled to 0.999. Otherwise passthrough.
- Peak, not RMS, not LUFS. If two files have the same peak but wildly different perceived loudness, this node has nothing to say about it.
- Unconnected input raises
audio input is required.- the pack is consistent about that across its audio utilities. - v1.0.x workflows. Renamed node types in v1.1.0 mean old graphs involving these utility nodes may load with missing-node errors.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |