Audio Post-Processor
A Real Mastering Chain That Works on Any Audio
- audio
- AUDIO
Raw model output is rarely presentable. The HeartMuLaPostProcessor - displayed as Audio Post-Processor - is the pack's answer to that: a little DSP chain that cleans up a generation before it reaches your ears or your video track. High-pass, low-pass, gain, stereo widening, and peak normalization, all in one node.
Here's the part the name hides: nothing about it is HeartMuLa-specific. It takes a standard AUDIO socket and returns a standard AUDIO socket. That means it works on anything in your graph - a HeartMuLa decode, a TTS voice from any other pack, a loaded audio file. It's the one node in this pack you might keep using even after you've moved on from the music models, and for a music-generation pack that's a quietly nice bonus.
What the knobs actually do
The chain runs in a fixed order in the source, which matters for how the settings interact:
- high_pass (
INT, default 80 Hz) - biquad high-pass. Kills sub-bass rumble and low-end mud. 80 is the classic "clean it up" starting point. - low_pass (
INT, default 18000 Hz) - biquad low-pass for hiss and harshness. Note it only applies if it's below the Nyquist rate of your audio (half the sample rate); set it above that and it's silently skipped. - gain_db (
FLOAT, -20 to +20) - straight volume boost or cut. - stereo_width (
FLOAT, 0–2, default 1) - mid-side processing. 1 is untouched; below 1 narrows the stereo image, above 1 widens it. Feed it mono and it duplicates to stereo first so the width control still does something. - normalize (
BOOLEAN, default on) - peak-normalizes to 0 dB, last in the chain.
The one real trap
If normalize is on, gain_db does nothing. The gain is applied before normalization, and normalization divides the whole waveform down to its peak - which exactly cancels any scalar gain you applied. The default state of this node is normalize on and gain_db at 0, so you'll only hit it if you start turning both. If you want louder, either turn off normalize and use gain, or keep normalize and accept the peak ceiling. Trying to do both at once is how you get a node that appears broken.
Wiring and setup
Input audio in, audio out. In the generation example workflow it slots between the HeartMuLaAudioDecoder and your preview/save node, though it's optional - the example's default path goes straight to PreviewAudio without it, which tells you it's polish, not requirement.
Installation is the shared pack install - ComfyUI Manager search "HeartMuLa", or:
cd ComfyUI/custom_nodes
git clone https://github.com/BobRandomNumber/ComfyUI-HeartMuLa.git
pip install -r requirements.txt
And here's the best part: it loads no models. No weights, no VRAM, no downloads. It's pure torchaudio DSP running on CPU, so it's free to slap anywhere and experiment.
My advice: leave the defaults on and just use it as the "make it not sound raw" node between generation and save. It won't turn HeartMuLa's output into a studio master - no one-node chain does - but it kills the rumble, softens the top end, and stops your renders from clipping, which is exactly the 80% of "mastering" a hobbyist needs. And when you eventually stop using HeartMuLa entirely, this node is the souvenir worth keeping.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| normalize | BOOLEAN | true | — |
| stereo_width | FLOAT | 1.000–2 | — |
| high_pass | INT | 800–1000 | — |
| low_pass | INT | 180000–24000 | — |
| gain_db | FLOAT | 0.0-20–20 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |