Loudness Meter
A free LUFS check inside ComfyUI, with a catch
- audio
- integrated_lufs_approx
- true_peak_db
- lra_db_approx
- summary
Why you'd want a loudness check at all
If you're shipping audio anywhere that enforces standards - YouTube, a podcast host, broadcast, client review - loudness matters and "how loud does it sound to me" is not a measurement. The broadcast-ish target is roughly −14 LUFS integrated for streaming platforms, and until you can see a number you're flying blind. MKRLoudnessMeter gives you that number without leaving the graph.
It's part of MKRShift_Nodes, the big utility pack by Cris K B. Completely self-contained - it computes everything in numpy from the waveform, so no external audio libraries and no ffmpeg requirement for this node specifically.
How it works, and the honest part
You feed it any audio input (the pack's MKR_AUDIO type or anything resolvable to a file or waveform) and it decodes the samples, then computes three stats in pure numpy:
integrated_lufs_approx- the overall loudness, gated toward the standard integrated LUFS measure.true_peak_db- the actual peak sample level.lra_db_approx- loudness range, i.e. how much the loudness varies across the track.
Here's the catch, and the name tells you it: the "approx". This is not a certified EBU R128 implementation - that's a heavy, carefully-specified DSP chain (K-weighting filters, gating, block statistics). This is a solid numpy approximation that's perfectly good for "is this in the right ballpark" checks, and genuinely useful for relative comparisons ("my music bed is 6 LUFS hotter than the VO"). If you're doing loudness compliance - broadcast deliverable, must-hit-spec - verify with a real meter before you send it out. For everything else, this is free and instant.
window_ms (default 400) controls the analysis window for the loudness-range measurement; you basically never need to touch it.
The outputs
Four: the three numbers above, plus a summary string with sample rate, channels, duration, and warnings in JSON. The node returns zeros (−120 dB-ish) if it can't get a waveform, with the reason in the summary - so if you see a wall of −120, check the warnings before the math.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart, or install "MKRShift Nodes" via ComfyUI Manager. No pip requirements, no models. If your audio comes from a file, the node will need ffmpeg on PATH to decode it - the pure-waveform path doesn't, but file-based audio always goes through ffmpeg in this pack.
Where it bites
The classic misuse: treating integrated_lufs_approx as gospel and then being surprised when a real loudness meter disagrees by a couple of dB. It's a meter for graphs, not a substitute for a mastering tool. Use it to catch the "my whole video is way quieter than the reference" class of problem, or to A/B two exports before you pick one - that's where it earns its keep, and it's one of the few loudness measurements you can get in ComfyUI without installing another wheel.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | * | — | |
| window_ms | INT | 40050–10000 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| integrated_lufs_approx | FLOAT | — |
| true_peak_db | FLOAT | — |
| lra_db_approx | FLOAT | — |
| summary | STRING | — |