EBU R128 loudness measurement, normalization, and CI gate.
Measure integrated loudness, range, and true peak, then run deterministic two-pass FFmpeg normalization.
- A deterministic domain analysis engine with explicit scope
- JSON API and responsive local browser workbench
- CLI demo and file-driven analysis
- Docker image, unit tests, and GitHub Actions matrix
- No API keys and no uploaded user data
python -m venv .venv && source .venv/bin/activate
python -m pip install -e .
loudnessgate demo
loudnessgate normalize input.wav mastered.wav --profile podcast
loudnessgate serveOpen http://127.0.0.1:8090. Analyze your own JSON input with loudnessgate analyze input.json.
GET /api/demoreturns the committed fixture and result.POST /api/analyzeruns the same engine on a JSON body.
The podcast fixture measures -18.40 LUFS against a -16 LUFS target, so the gate requests +2.40 dB while its loudness range and true peak already pass. The integration test performs real two-pass normalization and remeasures the output.
Broadcast, podcast, and music-streaming presets are engineering defaults, not universal delivery contracts. Confirm each distributor's current target, channel layout, codec, and true-peak requirements.
python -m unittest discover -s tests -vMIT licensed.

