Skip to content

Releases: M-Igashi/mp3rgain

v2.2.3

20 Apr 09:22

Choose a tag to compare

What's Changed

  • fix(id3v2): drop frames that fail individual encode, not just by ID by @M-Igashi in #116

Full Changelog: v2.2.2...v2.2.3

v2.2.2

18 Apr 15:30

Choose a tag to compare

What's Changed

  • fix(id3v2): preserve ReplayGain write on ID3v2.2-tagged MP3s by @M-Igashi in #114

Full Changelog: v2.2.1...v2.2.2

v2.2.1

17 Apr 15:13

Choose a tag to compare

What's Changed

  • ci: bump the github-actions group with 4 updates by @dependabot[bot] in #111

Full Changelog: v2.2.0...v2.2.1

v2.2.0

16 Apr 17:28

Choose a tag to compare

Highlights

  • Upgrade Symphonia v0.5 → v0.6.0-alpha.2 — Updated audio decoding library with improved API and performance (#109)
  • Per-file progress indication during ReplayGain analysis — Large files now show individual progress bars during -r/-a analysis
  • PPA packaging for Ubuntu — New ppa:m-igashi/mp3rgain repository for Ubuntu noble (24.04 LTS) distribution via Launchpad

Other Changes

  • Code cleanup: deduplicate bit operations between MP3 and AAC modules, extract shared MP4 box navigation, remove redundant derived state
  • Fix: convert Cargo.lock v4 to v3 for Ubuntu noble (Rust 1.75) compatibility in PPA builds
  • Fix: stub platform-specific vendor crates and use max xz compression for PPA orig tarballs
  • Fix: update rand 0.9.2 → 0.9.4 to resolve RUSTSEC-2026-0097
  • Add automatic PPA upload trigger after Release workflow
  • Add weekly download stats collection workflow (#110)
  • Improve GUI error message display on startup failure
  • Update winget manifests to v2.1.0
  • Limit GUI .deb support to Ubuntu 24.04+ / Debian trixie+
  • Update documentation with full package manager installation options and PPA troubleshooting

What's Changed

Full Changelog: v2.1.0...v2.2.0

v2.1.0

07 Apr 09:42

Choose a tag to compare

What's Changed

Full Changelog: v2.0.4...v2.1.0

v2.0.4

05 Apr 13:52

Choose a tag to compare

Changes

  • Update rustls-webpki to 0.103.10 to fix security advisory (#100, #99)
  • Add dependency review GitHub Action (#102)
  • Bump github/codeql-action in CI (#101, #103)

v2.0.3

20 Mar 13:25

Choose a tag to compare

Highlights

  • Refactored tag display logic in cmd_check_tags: Extracted ~120 lines of duplicated tag display code (AAC, ID3v2, APE paths) into a shared display_tag_info helper function, improving maintainability.

Other Changes

  • Added SECURITY.md and improved Dependabot configuration
  • Removed CLAUDE.md from version control
  • Updated README installation section with package manager tables
  • Updated winget manifests and AUR packages for v2.0.2
  • CI dependency updates:
    • github/codeql-action bumped (two updates)
    • softprops/action-gh-release 2.5.0 → 2.6.1
    • actions/cache 5.0.3 → 5.0.4

What's Changed

  • chore(deps): bump github/codeql-action from 4.32.6 to 4.33.0 by @dependabot[bot] in #97
  • chore(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1 by @dependabot[bot] in #96
  • chore(deps): bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in #95
  • ci: bump github/codeql-action from 4.33.0 to 4.34.0 in the github-actions group by @dependabot[bot] in #98

Full Changelog: v2.0.2...v2.0.3

What's Changed

  • chore(deps): bump github/codeql-action from 4.32.6 to 4.33.0 by @dependabot[bot] in #97
  • chore(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1 by @dependabot[bot] in #96
  • chore(deps): bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in #95
  • ci: bump github/codeql-action from 4.33.0 to 4.34.0 in the github-actions group by @dependabot[bot] in #98

Full Changelog: v2.0.2...v2.0.3

v2.0.2

14 Mar 04:25

Choose a tag to compare

What's Changed

  • chore(deps): bump actions/download-artifact from 8.0.0 to 8.0.1 by @dependabot[bot] in #92
  • chore(deps): bump github/codeql-action from dd677812177e0c29f9c970a6c58d8607ae1bfefd to 0d579ffd059c29b07949a3cce3983f0780820c98 by @dependabot[bot] in #93
  • chore(deps): bump actions/cache from 4.3.0 to 5.0.3 by @dependabot[bot] in #94

Full Changelog: v2.0.1...v2.0.2

v2.0.1

12 Mar 20:37

Choose a tag to compare

What's Changed

  • chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #84
  • chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #85
  • chore(deps): bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #86
  • chore(deps): bump indicatif from 0.17.11 to 0.18.4 by @dependabot[bot] in #91
  • chore(deps): bump softprops/action-gh-release from 2.2.1 to 2.5.0 by @dependabot[bot] in #90
  • chore(deps): bump anyhow from 1.0.100 to 1.0.102 by @dependabot[bot] in #89
  • chore(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in #88
  • chore(deps): bump colored from 2.2.0 to 3.1.1 by @dependabot[bot] in #87

Full Changelog: v2.0.0...v2.0.1

mp3rgain v2.0.0

28 Feb 19:44

Choose a tag to compare

A major release with full AAC/M4A lossless gain adjustment, ID3v2 ReplayGain tag support, a redesigned library API, and improved mp3gain compatibility.

Highlights

Full AAC/M4A Lossless Gain Adjustment

mp3rgain now supports true lossless volume adjustment for AAC/M4A files, just like MP3. By modifying the global_gain field directly in the AAC bitstream, audio quality is perfectly preserved with no re-encoding.

  • Apply gain: mp3rgain -r file.m4a / mp3rgain -g 3 file.m4a
  • Undo gain: mp3rgain -u file.m4a (undo data stored in iTunes freeform tags)
  • HE-AAC/SBR support: Properly handles SBR extension data
  • Multi-channel support: Works with 5.1 and other multi-channel layouts
  • Multi-track awareness: Warns when multiple audio tracks are detected

ID3v2 ReplayGain Tag Storage (-s i)

The -s i option now fully writes and reads ReplayGain data using ID3v2 TXXX frames, matching the de facto standard used by foobar2000 and other players. Previously this option fell back to APEv2 tags with a warning.

  • Track/album gain and peak values stored as TXXX frames
  • Undo data stored in TXXX frames for -s i -u support
  • Full tag display (-s i -s c) and deletion (-s i -s d)

Redesigned Library API (Breaking Changes)

The Rust library API has been redesigned for v2.0.0 with better ergonomics and type safety:

  • Custom error types: anyhow::Result replaced with typed mp3rgain::Error enum — library users can now pattern-match on specific error variants
  • GainOptions builder pattern: Replaces 7 separate apply_gain_* functions with a single fluent API:
    GainOptions::new(3).wrap(true).undo(true).apply(&path)?;
  • Type-safe enums: MpegVersion and ChannelMode are now proper enums instead of strings
  • Private struct fields with accessors: Mp3Analysis, MaxAmplitudeResult, AacAnalysis, and ReplayGainResult fields are now accessed via methods
  • Modular source structure: Library internals reorganized into analysis, gain, ape, frame, id3v2, error, and replaygain submodules

mp3gain Compatibility Improvements

  • macOS resource fork files (._*) are now automatically skipped in recursive mode (-R)
  • Default text output now includes ReplayGain analysis results for better compatibility
  • TSV and text output include album summary lines
  • Warning when using -l (channel gain) on Joint Stereo files

Migration Guide (Library Users)

If you use mp3rgain as a Rust library, note these breaking changes:

v1.x v2.0
anyhow::Result<T> mp3rgain::Result<T> (with typed Error enum)
analysis.frame_count analysis.frame_count()
analysis.mpeg_version (String) analysis.mpeg_version() (MpegVersion enum)
apply_gain_with_undo(path, steps) GainOptions::new(steps).undo(true).apply(path)
apply_gain_wrap(path, steps) GainOptions::new(steps).wrap(true).apply(path)
find_max_amplitude(path)(f64, u8, u8) find_max_amplitude(path)MaxAmplitudeResult

Convenience functions apply_gain() and apply_gain_db() are retained for simple use cases.

What's Changed

  • Implement AAC lossless bitstream gain adjustment (issue #64 phase 2) by @M-Igashi in #76
  • Implement AAC undo support, validation, and extended support (issue #64 phases 3-5) by @M-Igashi in #77
  • Implement Phase 5 breaking API changes for v2.0 (issue #68) by @M-Igashi in #78
  • Implement Phase 6 API polish: GainOptions builder and submodules (issue #68) by @M-Igashi in #81
  • Implement full ID3v2 ReplayGain tag storage -s i by @M-Igashi in #82
  • Fix mp3gain compatibility issues found in comprehensive testing (issue #79) by @M-Igashi in #83

Full Changelog: v1.7.0...v2.0.0