Audio Release Prep – Static LUFS / True Peak / SRC
LUFS loudness without the compressor — the mastering stage that won't pump
- audio
- audio
- release_prep_json
- info
Every AI-music pipeline eventually hits the same wall: you've got a track you like, but it's 14 dB quieter than every real release you compare it to, and you don't want to spend an afternoon babysitting a compressor. Audio Release Prep – Static LUFS / True Peak / SRC is the pack's answer: it converts to a final sample rate, measures BS.1770 loudness and true peak, and applies exactly one constant gain to the whole program. No compressor, no AGC, no dynamic gain riding. If your target LUFS would push peaks over the true-peak ceiling, it just stops lower - by design.
That's the whole editorial stance of this node, and it's worth internalizing: it preserves dynamics rather than forcing every track to a loudness target through compression. A quiet, dynamic master stays quiet and dynamic. You get loudness compliance, not "mastering."
Where it sits
It's the last DSP stage in the chain, after HF repair and the POST low-pass, immediately before the FLAC/MP3 saver. It's the "final level and sample-rate" gate. Feed it the fully processed audio, not the raw MiniMax output.
How it works
Two independent jobs, in a fixed order:
- Sample-rate conversion first.
target_sample_rateof44100(standard release),48000(keep a 48 kHz production master), orkeep(leave it alone). Conversion uses high-quality polyphase FIR resampling. Resampling before measurement matters - the loudness numbers you read are for the actual output rate, not the pre-conversion source. - Loudness, optionally. The
processingdropdown drives it: Resample only changes nothing but the rate. The presets -Streaming Safe -14 LUFS / -1 dBTP,Modern Music -12 LUFS / -2 dBTP,Loud Electronic -10 LUFS / -2 dBTP- measure integrated loudness and true peak, then apply one constant full-program gain capped by the true-peak target.Customusescustom_target_lufsandcustom_true_peak_dbtpinstead.
A note on those presets: the -10 LUFS / Loud Electronic one is the classic "streaming war" setting and this pack will happily do it - but the LUFS limiter it never uses is exactly the tool that normally lets you win the war without clipping. Don't reach for the loudest preset unless the genre genuinely calls for it. Streaming Safe is the sane default for most people.
Inputs and outputs
The four widgets that matter are audio, target_sample_rate, processing, and the two custom_* fields (only used in Custom mode). Everything else is inherited from the chain upstream. Outputs are audio, release_prep_json (a JSON report with effective sample rate, loudness, true peak and the static gain), and info. Feed release_prep_json into MiniMax Song Metadata so the mastering parameters land in your sidecar.
Installing it
It ships in jplenio's MiniMax Music Production Toolkit. ComfyUI Manager (search the pack title) handles it; manually:
cd ComfyUI/custom_nodes
git clone https://github.com/jplenio/ComfyUI-MiniMax-Music-Production-Toolkit.git
cd ComfyUI-MiniMax-Music-Production-Toolkit
python -m pip install -r requirements.txt
Dependencies are scipy, soundfile, imageio-ffmpeg, mutagen and Pillow - nothing heavy, no weights. Restart ComfyUI and hard-refresh once.
Gotchas
Two things trip people up. First: if the track comes out quieter than the LUFS target, that's the true-peak ceiling winning, and it's intentional. Turn the -1 dBTP ceiling down (more negative) for more headroom, not up. Second: if you hear pumping or time-varying level, it's not this node - the README's troubleshooting specifically says to check whether another compressor/limiter/loudness node is hiding elsewhere in your graph. Also note the loudness measurement leans on FFmpeg (system, or imageio-ffmpeg's bundled binary); if you get a loudness error, that dependency is the first thing to verify.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Final processed audio to prepare for release, normally after HF repair and POST low-pass. Sample-rate conversion happens before loudness/true-peak measurement so the reported values represent the actual output rate. | |
| target_sample_rate | COMBO | 44100 | Final sample rate. 44100 gives standard 44.1 kHz release files, 48000 keeps a 48 kHz production master, and keep leaves the incoming sample rate unchanged. Conversion uses high-quality polyphase FIR resampling. |
| processing | COMBO | Resample only | Release-prep mode. Resample only changes sample rate without loudness gain. The LUFS presets measure ITU-R BS.1770 loudness/true peak and apply ONE constant gain to the whole track, capped by the true-peak target—no compressor, AGC or time-varying gain. Custom uses the two custom target fields; Bypass changes nothing. |
| custom_target_lufs | FLOAT | -14.0-24–-5 | Integrated loudness target used only when processing=Custom. The node applies a single constant full-program gain; if reaching this target would violate the true-peak ceiling, it stops lower instead of compressing or riding the level. |
| custom_true_peak_dbtp | FLOAT | -1.0-6–-0.1 | Maximum true-peak target used only when processing=Custom. More negative values leave more codec/playback headroom. This limit can prevent the requested LUFS target from being reached, by design, to preserve internal dynamics. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| release_prep_json | STRING | — |
| info | STRING | — |