mp3rgain を入手する
同じ処理エンジンを使う 2 つのプログラムがあります。ドラッグ&ドロップで使えるデスクトップアプリの mp3rgui と、mp3gain と同じオプションで動くコマンドラインツールの mp3rgain です。
Windows
お使いの OSWindows 10 / 11、x64 と ARM64
デスクトップアプリ (mp3rgui)。ターミナルも管理者権限も不要です。
winget install M-Igashi.mp3rgain
macOS
お使いの OSmacOS 11 以降、Apple シリコンと Intel
brew install --cask M-Igashi/tap/mp3rguiデスクトップアプリ。署名と公証済みです。DMG は GitHub Releases にもあります。
brew install M-Igashi/tap/mp3rgain
Linux
お使いの OSx86_64 と ARM64
sudo apt install mp3rguiどちらも apt リポジトリ を一度追加すれば入ります(Debian 12 以降、Ubuntu 22.04 以降。アプリは Debian 13 / Ubuntu 24.04 以降)。AUR にもあります。
sudo apt install mp3rgain
MacPorts、AUR、Nix、pkgx、Termux、Docker (GHCR)、crates.io からも入手できます。すべての方法と apt リポジトリの設定、動作確認、困ったときの対処は インストールガイド にあります。
変わるのは音量だけ。音声データは変わりません。
MP3 と AAC の各フレームには、デコーダーにどれだけの大きさで再生するかを伝える global_gain という値があります。mp3rgain は音量を測定し、この値だけを書き換えます。隣にある圧縮済みの音声データには触れません。
測定する
ReplayGain の解析で、各曲(またはアルバム全体)が基準の音量からどれだけ離れているかを求めます。この時点では何も書き込みません。
-nを付ければ実行結果を事前に確認できます。ゲイン値を書き換える
補正は 1.5 dB 刻みで全フレームに適用されます。変更がファイル自体に入るので、ReplayGain タグを無視するカーステレオや携帯プレーヤー、アプリでも補正後の音量で再生されます。
タグを書き、戻り道を残す
標準の ReplayGain タグと undo タグを書き込みます。ファイルは一時ファイルに書いてから置き換えるので、途中で失敗しても元のファイルは壊れません。
mp3rgain -uで元のゲインに戻せます。
$ mp3rgain -a *.mp3 mp3rgain Analyzing album gain for 3 file(s) Target: 89 dB (ReplayGain 1.0) ... Album gain: -3.0 dB (-2 steps) Album peak: 0.7289 v 01-intro.mp3 (308 frames, -3.0 dB) v 02-title.mp3 (308 frames, -3.0 dB) v 03-outro.mp3 (308 frames, -3.0 dB) $ mp3rgain -u 01-intro.mp3 mp3rgain Undoing gain changes on 1 file(s) v 01-intro.mp3 (308 frames restored)
mp3gain と aacgain の開発は止まっています。
必要性は変わりません。
mp3gain は 1.6.2 以降リリースがなく、配布されている Windows 版はセキュリティ修正より前のものです。aacgain の最後のリリースは 2019 年です。現在主流の ReplayGain ツールはタグを書くだけで、多くの機器はそのタグを無視します。再エンコードは、行うたびに音質が落ちます。mp3rgain は同じ無劣化の方法を、両方の形式に対して、メンテナンスを続けながら提供します。
| ツール | 状況 | ファイル自体を無劣化で変更 | 形式 | 元に戻す | 動作環境 |
|---|---|---|---|---|---|
| mp3rgain | 開発継続中 | できる | MP3、AAC / M4A | できる | Windows、macOS、Linux。CLI と GUI |
| mp3gain | 1.6.2 以降リリースなし | できる | MP3 | できる | Windows 版は未修正。Debian / Ubuntu のパッケージは修正済み |
| aacgain | 最終リリースは 2019 年 | できる | MP3、AAC / M4A | できる | Windows 版のみ配布。他はソースからビルド |
| foobar2000 | 開発継続中 | できる(オプション) | MP3、AAC(タグは多数の形式) | 書き込み後は不可 | Windows の GUI |
| rsgain、loudgain | rsgain は継続中 | できない(タグのみ) | 多数 | 不要 | 各 OS の CLI |
| ffmpeg loudnorm | 開発継続中 | できない(再エンコード) | ほぼすべて | できない | 各 OS の CLI |
従来のツールができたことと、できなかったこと
無劣化
書き換えるのは各フレームのゲイン値だけです。圧縮された音声をデコードして再圧縮することはありません。MP3、M4A / MP4 内の AAC、生の ADTS .aac に対応します。
元に戻せる
変更はすべて undo タグに記録されます。mp3rgain -u で、MP3 でも AAC でも元のゲインに戻せます。
mp3gain 互換
オプション、TSV 出力、MP3GAIN_UNDO タグが同じなので、スクリプトや beets の設定がそのまま動きます。
ReplayGain 1.0 / 2.0 / R128
既定は mp3gain と同じ値になる ReplayGain 1.0。--rg2 と --r128 で BS.1770 のラウドネス測定に切り替えられます。
タグも書く、タグだけも可
ゲインの書き込みと同時に標準の REPLAYGAIN_* タグを書きます。--tags-only なら音声には触れません。
メモリ安全
Rust 製で、自身のコードに unsafe ブロックはありません。mp3gain と aacgain の CVE の原因になった C のコードは含みません。
単体で動く
ffmpeg もランタイムも不要です。デコードは内蔵の Rust 製ライブラリ Symphonia で行います。
ライブラリ全体を一括処理
フォルダの再帰処理、フォルダ単位やリリース単位のアルバム分け、全 CPU コアでの並列処理、JSON 出力に対応します。
mp3rgui: ターミナルは不要です
Windows の MP3Gain を使っていた方なら、同じ流れで使えます。ファイルを追加し、解析し、適用するだけです。
- ファイルやフォルダをドラッグ&ドロップ(サブフォルダも対象)
- 全 CPU コアを使うトラック解析とアルバム解析。途中でキャンセル可能
- クリッピング防止は既定でオン。メニューから元に戻せます
- 日本語を含む 7 言語に対応
mp3rgain が向いている場合
他のツールが向いている場合
mp3rgain は販売を目的としない小さな無料ツールです。合う場面と、他のツールのほうがよい場面を率直に書きます。
mp3rgain が向いている場合
- 現在の Windows、macOS、Linux で使える mp3gain や aacgain を探している
- プレーヤーやカーステレオ、スピーカーが ReplayGain タグを無視する
- M4A や AAC のファイルを、無劣化のまま調整したい
- スクリプトや Docker、cron で自動化し、あとで元に戻せるようにしたい
他のツールが向いている場合
- FLAC、Opus、Ogg、WAV を扱う。または使うプレーヤーがすべて ReplayGain タグに対応している: rsgain
- Windows のデスクトップで、基準となる ReplayGain スキャナーを使いたい: foobar2000
- 納品用に正確なラウドネス値が必要で、再エンコードしてもよい: ffmpeg の
loudnorm - rekordbox と CDJ 用に DJ ライブラリを準備する: Bake'n Deck
Bake'n Deck
CDJ などの DJ 機器は ReplayGain タグを無視し、rekordbox の Auto Gain は USB メモリに書き出されません。Bake'n Deck は同じ作者による rekordbox → CDJ 向けの準備ツールで、MP3 / AAC の処理エンジンとして mp3rgain を内蔵しています。準備した内容をファイルそのものに書き込みます。
- Headroom. ゲインのみ、リミッターなし。各トラックを −0.5 dBTP のトゥルーピーク上限まで上げ下げします。MP3、AAC、FLAC、AIFF、WAV、ALAC に対応し、キューとビートグリッドは保たれます。
- Sort. 書き出した rekordbox XML 内の全プレイリストを、キー、BPM の順に並べ替えます。
- CDJ Safe. プレイリストを 320 kbps CBR の MP3 に変換し、キューとビートグリッドを引き継ぎます。
- macOS、Windows、Linux 用の無料 CLI(MIT ライセンス)と、Mac 用のネイティブアプリがあります。
よく聞かれる質問と答え
再エンコードせずに、どうやって音量を変えるのですか?
MP3 と AAC の各フレームには、デコーダーが出力をどれだけの大きさで再生するかを決める global_gain という値が入っています。mp3rgain はこの値だけを書き換えます(1 ステップ = 1.5 dB)。圧縮された音声データそのものには触れないので音質は変わらず、変更後の音量はどのプレーヤーや機器でもそのまま再生されます。
mp3gain の代わりにそのまま使えますか?
ほとんどの場合は使えます。コマンドラインのオプション、TSV 出力、MP3 の undo タグ (MP3GAIN_UNDO) は mp3gain と互換なので、既存のスクリプトや beets の設定はコマンド名を置き換えるだけで動きます。mp3gain が処理したファイルを mp3rgain で元に戻すこともできます。意図的に変えている点は 2 つあります。既定では毎回解析し直すこと(保存済みタグを使うには -s R)、そして MP3 の ReplayGain タグを ID3v2 に書くこと(mp3gain と同じ APEv2 にするには -s a)です。
mp3gain は安全ですか? mp3rgain のほうが安全ですか?
入手元によります。mp3gain 1.6.2 と同梱コードには 21 件の CVE が公開されており、大半は細工されたファイルで起こるメモリ破壊です。Debian と Ubuntu のパッケージは修正済みですが、SourceForge の Windows 版と Chocolatey のパッケージは未修正で、修正を含む公式リリースは出ていません。mp3rgain は mp3gain や aacgain のコードを一切共有しない Rust 製の別実装で、自身のコードに unsafe ブロックはなく、デコードには Rust 製の Symphonia を使うため、この種の不具合は構造的に持ち込まれません。ただしこれは設計上の説明であり、バグがないという保証ではありません。詳しくは mp3gain は安全か をご覧ください。
Windows 11 や Mac で使える mp3gain はありますか?
mp3rgain がそれにあたります。デスクトップアプリの mp3rgui は Windows 10 / 11(x64 と ARM64)、macOS 11 以降(Apple シリコンと Intel)、Linux で動き、ファイルを追加して「トラック解析」または「アルバム解析」を実行し、「トラックゲイン」または「アルバムゲイン」を適用するという、従来の MP3Gain と同じ流れで使えます。Windows は インストーラー、macOS は brew install --cask M-Igashi/tap/mp3rgui で入ります。使い方は デスクトップアプリのページ にあります。
変更を元に戻せますか?
はい。適用したゲインは undo タグ(MP3 では mp3gain と同じ MP3GAIN_UNDO、AAC では mp3rgain_undo)に記録され、mp3rgain -u(アプリでは「ゲイン変更」メニューの「すべて元に戻す」)で各フレームの値を元に戻せます。音声は完全に元に戻り、もともと ID3v2 タグがなかったファイルはバイト単位で元と一致します(3.16.2 以降)。ID3v2 タグがあった MP3 は、そのタグが ID3v2.4 として書き直された状態で残ります。ゲインの値が 0 または 255 の限界に達したフレームは正確には戻せず、その場合は警告が出ます。
AAC や M4A にも使えますか? aacgain の代わりになりますか?
はい。M4A / MP4 に入った AAC と、生の ADTS (.aac) を、MP3 と同じ方法で無劣化のまま調整でき、元に戻すこともできます。aacgain は 2019 年 12 月の 2.0.0 が最後のリリースで、最後のコミットは 2022 年 7 月です。私たちの知る限り、AAC の音量を無劣化で調整できるコマンドラインツールのうち、現在もメンテナンスされているのは mp3rgain だけです。HE-AAC、ALAC、DRM 保護された M4P は対象外で、スキップされます。