mp3gain.exe とコマンドラインオプション
2010年02月06日(土)22時20分
MP3Gain
手持ちの CD を PC 上でライブラリ化する作業は、現在のところ全 CD を「wav + cue + jpg」にするところまで終了しました。
で、この後の具体的な作業は決まっていないものの、「MP3 ファイルを生成する」こと、「MP3Gain で音量を統一する」こと、そしておそらくそれらの作業を「スクリプトを書いて自動化する」であろうこと、はなんとなく決めていますので、とりあえず MP3Gain のコマンドライン・オプションなんかを調べてみました。
「MP3GainGUI.exe」と「mp3gain.exe」
ちなみに「MP3Gain 使い方」なんかで検索した場合に表示される多くのサイトで紹介されているのは、「MP3GainGUI.exe」というフロントエンドの GUI プログラムの使い方であり、これ自体には MP3 ファイルをどうこうする機能はありません。
実際に MP3 ファイルの分析や音量の変更を行っているのは、「mp3gain.exe」というコンソール・アプリケーションで、今回はこの「mp3gain.exe」をコマンド・プロンプトから使う場合のお話です。
「mp3gain.exe」と「aacgain.exe」
なお、このコマンドライン・ツールである「mp3gain.exe」は、AAC ファイルの音量を調整するコマンドライン・ツール「aacgain.exe」と互換性がありますので(というより AACGain が MP3Gain に合わせて作られたのだと思いますが)、ここで書かれている内容は AACGain にもそのまま流用できると思います。
「/r /c /p」
結論から言うと、とりあえず「mp3gain /r /c /p filename1.mp3 filename2.mp3 ~」で各曲を「89dB」に設定できるようです。
なお「/」を「-」に変えて「mp3gain -r -c -p filename.mp3 ~」としても同じことです。
「/r」はトラックゲインの指示で各ファイルを個別に「89dB」に調整します。
ここを「/a」に変えるとアルバムゲイン、つまり並べた各曲の相対的な音量差を保ったまま全体的に音量を上げ下げします。
「/c」はクリッピングが発生しても確認メッセージを出さないオプションで、これを付けないとクリッピングするときに「Make change? [y/n]:」と表示され、入力待ちが発生してしまいます。
これではスクリプトで連続実行させる場合などには困りますので付けておきます。
ただしこうすると当然クリッピングが防げないわけですが、まあそれが気になるようなら後からでも戻せるのが MP3Gain の利点の一つですし、そもそも特に最近の CD だと初期状態で既にクリッピングしていたりとかも普通にありますので、さして問題にならないと思います。
「/p」はファイルのタイムスタンプを変更しないオプションで、あってもなくてもいいんですが、おまけです。
「89dB」
ところでこの自動的に調整される際に使用される「89dB」という基準値はどこからくるのか、という話ですが、これはどうも「mp3gain.exe」に埋め込まれた固定値のようです。
レジストリを検索すると一見それらしき情報が見つかるのですが、これは前述のフロントエンドである「MP3GainGUI.exe」が自身の設定を記録しているもののようで、このレジストリ値を変更しても「mp3gain.exe」の挙動に変化はありません。
基準値の変更
それではこの基準値である「89dB」を変更するためにはどうすればいいのか、というと、これは「/m」か「/d」を使って指定します。
この二つのオプションは、基準値「89dB」に対していくら変化させるかを指定するもので、例えば「93dB」にしたければ、89 を 93 にするためには +4 する必要がありますので、「/d 4」とします。
つまり上の例で言えば「mp3gain /r /c /p /d 4 filename1.mp3 filename2.mp3 ~」です。
「86dB」にしたければ「86-89=-3」ですので「mp3gain /r /c /p /d -3 filename1.mp3 filename2.mp3 ~」になります。
「/k」
ところで、上記「/d」オプションの使い方について調べているとき、例えば「93dB」に変更するためには「/r /k /p /d 93」とする、というふうに紹介されている例をいくつか見かけました。
これだと「89+93」で「182dB」に設定されることになるはずで、その場合ほぼ全曲が酷くクリッピングしますから、普通だとすぐに気が付くはずです。
しかし、そうならなかったのがおそらくここで付けられている「/k」オプションの効果で、これはクリッピング発生時にクリッピングしないギリギリまで自動で下げてくれる、というものです。
つまり「/r /k /p /d 93」とすると、大抵の曲がクリッピングしないギリギリの音量に変更され、だいたいの場合それは 90dB ~ 100dB あたりになるために、一見うまく行っているように見えたのではないかと思います(もしかしたらバージョンや OS によって「/d」の指定方法が違ったのかもしれませんが)。
MP3Gain のヘルプファイルでは、だいたいどの曲でもクリッピングが発生しない音量が「89dB」だと書いてあるわけですが、「同じくらいの音量に揃えたいが、クリッピングだけは絶対に起こしたくない」という場合には「/r /k /p」として変更するのがいいかと思われます。
なお「/k」をつけた場合にはクリッピングが発生しないため、当然「/c」は必要ありません。
「/m」と「/d」の違い
ところで基準値「89dB」を指定するオプションは、「/m」と「/d」の二つがあるわけですが、この両者の違いについて、実際に適当なMP3ファイルを、それぞれ0~9まで変化させてどうなるのか試してみました。
-m | -d | |
0 | 88.4 | 88.4 |
1 | 89.9 | 89.9 |
2 | 91.4 | 91.4 |
3 | 92.9 | 91.4 |
4 | 94.4 | 92.9 |
5 | 95.9 | 94.4 |
6 | 97.4 | 94.4 |
7 | 98.9 | 95.9 |
8 | 100.4 | 97.4 |
9 | 101.9 | 97.4 |
「/m」はほぼ「1.5dB」ずつ確実に変化、「/d」は「1.0dB」ずつ変化しまずが場合によって変化しないときもあります。
この「1.5dB」という数値は MP3Gain のヘルプファイルにも載っている「変化する音量の最小単位」です。
いろいろ難しいことが書いてあってよくわからないのですが、MP3Gain は MP3 デコーダが音量を決める際に使用する係数の一つを書き換えることで音量を調整しているそうで、その係数を「1」変更すれば、音量が「1.5dB」変化する、ということのようです。
つまり「/m」はその係数の値を直接指定するもので、これを変更すると確実に音量が変化します。
対して「/d」は目標の「dB」を指定して、「1.5dB」刻みの音量変化のうち一番それに近いものが選択されるため、場合によっては変わらないこともある、ということだと思います。
この違いがあるため「/m」は整数しか指定できませんが、「/d」は小数点も使えます。
つまり「/d 3.8」のようにして「92.8dB」に近い音量にする、というような指定が可能です。
分析
音量を変更せずに分析だけする場合には「/s s」を使います。
例えば三つのファイルを目標値「95dB」として分析する場合「mp3gain /s s /d 6.0 filename1.mp3 filename2.mp3 filename3.mp3」のようにし、その結果は以下のようになります。
filename1.mp3
Recommended "Track" dB change: 9.120000
Recommended "Track" mp3 gain change: 6
Max PCM sample at current gain: 8542.094209
Max mp3 global gain field: 210
Min mp3 global gain field: 106
filename2.mp3
Recommended "Track" dB change: -2.590000
Recommended "Track" mp3 gain change: -2
Max PCM sample at current gain: 38508.922896
Max mp3 global gain field: 210
Min mp3 global gain field: 94
filename3.mp3
Recommended "Track" dB change: -1.110000
Recommended "Track" mp3 gain change: -1
WARNING: some clipping may occur with this gain change!
Max PCM sample at current gain: 39983.137323
Max mp3 global gain field: 210
Min mp3 global gain field: 108
Recommended "Album" dB change for all files: -2.150000
Recommended "Album" mp3 gain change for all files: -1
WARNING: with this global gain change, some clipping may occur in file filename3.mp3
ここで表示されるのは「現在の音量からどれだけ変化させればいいのか」であって「89dB」を基準にした数値ではないようです。
また、クリッピングが発生する場合には「WARNING:」でその旨表示されています。
末尾にはアルバムゲインとした場合の分析結果が付きます。
なお、目標音量を指定せず、ただ「/s s」とだけした場合には、当然「89dB」を目標音量として分析し、結果を表示します。
「/g」
「/g」オプションは解析を行わずにいきなり指定値で音量を変更するためのものです。
解析しませんから「89dBを基準にいくら変更するか」は指定できませんので、「現在の音量を基準にいくら変更するか」を指定します。
つまり上記の「/s s」で行った分析結果を、実際にファイルに反映するために使用するオプションです。
もちろん、全体的に音量を上げ(下げ)たいというときにも使えますが。
ここで指定する数値は「dB」ではなく係数、つまり「/m」で指定するものに相当する数値、上記分析結果で言うと「mp3 gain change:」で表示されている部分のようです。
- 関連記事