Nodes/ComfyUI-MiniMax-Music-Production-Toolkit/Audio Release Prep – Static LUFS / True Peak / SRC
ComfyUI Node

Audio Release Prep – Static LUFS / True Peak / SRC

LUFS loudness without the compressor — the mastering stage that won't pump

By jplenio·Created about 16 hours ago·Updated about 15 hours ago· 0
Audio Release Prep – Static LUFS / True Peak / SRC
  • audio
  • audio
  • release_prep_json
  • info
target_sample_rate44100
processingResample only
custom_target_lufs-14.0
custom_true_peak_dbtp-1.0

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:

  1. Sample-rate conversion first. target_sample_rate of 44100 (standard release), 48000 (keep a 48 kHz production master), or keep (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.
  2. Loudness, optionally. The processing dropdown 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. Custom uses custom_target_lufs and custom_true_peak_dbtp instead.

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.

CategoryMiniMax Music Production Toolkit/mastering

Inputs (5)

NameTypeDefaultDescription
audioAUDIOFinal 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_rateCOMBO44100Final 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.
processingCOMBOResample onlyRelease-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_lufsFLOAT-14.0-24–-5Integrated 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_dbtpFLOAT-1.0-6–-0.1Maximum 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)

NameTypeDescription
audioAUDIO
release_prep_jsonSTRING
infoSTRING