Skip to content

v3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Aug 11:06

Highlights

BS.1770 loudness modes — ReplayGain 2.0 and EBU R128 (opt-in)

mp3rgain now ships an in-house ITU-R BS.1770-4 integrated loudness engine (K-weighting + gating, zero new dependencies) behind two new flags (#269, #270, #271 / #273, #274):

  • --rg2 — ReplayGain 2.0: normalize to the −18 LUFS reference (the same perceived level as the classic 89 dB reference; only the measurement algorithm changes)
  • --r128 — EBU R128: normalize to the −23 LUFS broadcast target

ReplayGain 1.0 stays the default and keeps producing values identical to mp3gain/aacgain — existing libraries stay coherent on re-scan. Both modes compose with -r/-a/-d/-m/-k and write the standard REPLAYGAIN_* tags through the same lossless global_gain pipeline (undo included). Measurements cross-check against ffmpeg -af ebur128 within 0.05 LU. JSON output gains analysis_mode and loudness_lufs fields.

The GUI (mp3rgui) gets a matching Analysis mode selector (RG 1.0 / RG 2.0 / R128) with LUFS loudness display (#272 / #275).

Breaking changes (why this is 3.0)

Unused public library API removed (#266 / #276): write_id3v2_undo, Channel::other(), MIN_GAIN, apply_aac_gain, apply_aac_gain_with_undo, and apply_aac_gain_with_undo_to_path. All had zero internal, GUI, or test usage; use apply_aac_gain_to_path / GainOptions for the equivalent functionality. The CLI is fully backward-compatible — no command-line behavior changes.

Other Changes

  • Post-review simplification pass over the v3.0 code: consolidated mode helpers (AnalysisMode::unit()/name()), unified JSON construction, mono/stereo fast path in the BS.1770 analyzer (#277)
  • analyze_track_with_mode() and AlbumAnalysisOptions.mode for library consumers
  • Docs: README, man page, --help, and technical comparison updated for the new modes
  • CI: bumped docker/login-action (#268)
  • Website (mp3rgain.tyna.ninja) linked from README and crates.io metadata

Full Changelog: v2.11.0...v3.0.0