Skip to content

Latest commit

 

History

History
150 lines (115 loc) · 5.18 KB

File metadata and controls

150 lines (115 loc) · 5.18 KB

mp3rgain Roadmap

Current Status: v2.0.0 (Production Ready)

All core functionality complete:

  • MP3 frame parsing (MPEG 1/2/2.5 Layer III)
  • Global gain modification (MP3 and AAC)
  • ID3v2 tag preservation
  • VBR/CBR support
  • CLI interface (apply/info/undo commands)
  • ReplayGain analysis (track and album gain)
  • AAC/M4A lossless bitstream gain adjustment and undo
  • Full mp3gain command-line compatibility
  • Cross-platform support (Windows, macOS, Linux)
  • Stabilized library API with custom error types, builder pattern, submodules

Completed Milestones

v0.2.0 - Windows & Stability

  • Windows 11 compatibility verification
  • Windows ARM64 support
  • Comprehensive test suite with real MP3 files
  • Error handling improvements
  • Homebrew tap formula

v0.3.0 - mp3gain Feature Parity

  • ReplayGain analysis (track gain calculation)
  • Album gain support
  • -r (apply Track gain) flag compatibility
  • -a (apply Album gain) flag compatibility
  • -c (ignore clipping) flag
  • -p (preserve original timestamp) flag

v0.4.0 - Extended Features

  • Batch processing with recursive directory support
  • Progress bar for large files
  • JSON output format
  • Dry-run mode
  • TSV output format

v1.0.0 - AAC/M4A Support

  • AAC/M4A ReplayGain analysis
  • iTunes freeform tag writing
  • Multi-track audio support (-i option)
  • Production-ready release

v1.1.0 - Package Manager Expansion

  • Scoop package (Windows)
  • winget package (Windows Package Manager)
  • AUR package (Arch Linux)
  • Nix package
  • Debian/Ubuntu package (.deb)

v1.2.0 - GUI Application & Bug Fixes

  • Native GUI application (mp3rgui) for macOS, Linux, Windows
  • Fix ReplayGain filter coefficients (v1.2.6)
  • Improved Debian package build

v1.3.0 - Code Quality & Stability

  • Code refactoring for better maintainability
  • Documentation updates

v1.4.0 - Bug Fixes & mp3gain Compatibility

  • Improved max amplitude detection (#51)
  • Fixed global_gain range handling (#52)
  • Handle last frame before APE/ID3 tags (#54)
  • Fixed M4A info display (#55)
  • Improved ReplayGain analysis accuracy (#48)
  • Corrected ReplayGain calculation ~90dB offset (#50)

v1.5.0 - Debian Packaging

  • Man page (docs/man/mp3rgain.1)
  • cargo-deb configuration
  • .deb package build in release workflow
  • .deb package test workflow (Debian 12/13, Ubuntu 22.04/24.04)

v1.6.0 - MP4/M4A Hardening & GUI Fixes

  • Hardened MP4/M4A metadata handling and file detection (#67)
  • Atomic write (temp file + rename) for M4A tag updates
  • ALAC file detection and proper rejection
  • DRM-protected M4P file rejection
  • Compatible brands list checking in ftyp box
  • Improved ilst box management (empty container cleanup, NeedsIlst)
  • Fixed chunk offset (stco/co64) updates with threshold-based adjustment
  • Fixed GUI volume display to use 89 dB ReplayGain reference (#62)
  • Code quality improvements (clippy, iterator patterns, helper extraction)

v1.7.0 - Library API Stabilization & AAC Parser (Issues #68, #64)

  • Add #[non_exhaustive] to all public enums and structs
  • Add missing standard trait implementations (PartialEq, Eq, Hash)
  • Add Display trait implementations to all public types
  • Add Serialize / Deserialize behind a serde feature flag
  • Add ApeTag::iter() and ApeTag::len() methods
  • Make MpegVersion / ChannelMode enums public with typed accessors on Mp3Analysis
  • Add MaxAmplitudeResult struct and find_max_amplitude_detailed() function
  • Add Channel::other() convenience method
  • Remove unnecessary pub from filter_coeffs internal constants
  • AAC bitstream parser for locating global_gain fields (Issue #64 Phase 1)
  • AUR package for mp3rgui (GUI application)
  • Automated AUR package publishing in release workflow

v2.0.0 - AAC Lossless Gain & Breaking API Changes (Issues #64, #68)

  • AAC lossless bitstream gain adjustment (global_gain modification)
  • AAC undo support (iTunes freeform metadata tags)
  • HE-AAC/SBR support (base layer gain adjustment)
  • Multi-track detection and warnings
  • Custom error types (thiserror) replacing anyhow::Result
  • MpegVersion / ChannelMode changed from String to enum
  • Private struct fields with accessor methods
  • GainOptions builder pattern
  • Submodule organization (analysis, gain, ape, frame)

Upcoming Goals

Future Enhancements

  • EBU R128 loudness analysis (--r128 option, ITU-R BS.1770 / LUFS-based)
  • ReplayGain 2.0 support (--rg2 option, R128-based with -18 LUFS reference)
  • Official Debian repository (ITP submission)
  • Homebrew core inclusion (currently in tap)
  • Fedora/RPM package
  • Flatpak package
  • FLAC support
  • Ogg Vorbis support
  • Integration with music players/taggers

Community Goals

  • Reach 100 GitHub stars
  • 5+ contributors
  • Grow Windows user base
  • Package availability in major package managers

How to Contribute

See CONTRIBUTING.md for details on how to get involved.