Windows Media Playerは音質が悪い?

ツイート

WMPプラグインで音量を少し下げてリミッタを回避する方法

 

Windows Media Player で音楽などを再生した場合、たとえWindowsの音量ミキサーで音量を小さくしたとしても、オーディオエンジン内のピークリミッタが掛かりっぱなしの状態でしか再生できない事が判り、打つ手無しかと諦めていたのですが、ケロ声が簡単に作れてしまうKeroVeeやWebブラウザをシンセサイザーにしてしまうWebMidiLinkなど、楽しい音ソフトウェアを沢山開発されている g200kgさんから

WMPオーディオDSPプラグインで音量を少し下げてからオーディオエンジンに音声を渡す様にすれば、WMPでもピークリミッタの影響を受けずに済むのでは?

というアイデアを教えて頂き、それを行う音量調整プラグインもすぐに作って頂きました。
(実際にはプラグインSDKのサンプルプログラムとして、正にこの「音量調整プラグイン」が含まれていたそうで、それをコンパイルしただけだそうです)

ピークリミッタのスレショルドに触らないよう音声全体の音量を少し下げる事になりますので、このボリューム演算によってほんの少し波形が劣化する事になるとは思いますが、恐らく耳では判らないくらいのわずかな劣化だと思います。

11月21日追記: WMP12はプラグインのボリューム演算を32ビットのfloat型で行い、その結果を24ビットもしくは32ビットでサウンドAPI(WASAPI共有)に出力している様ですので、オーディオIFのDACも24ビット以上ならば、このボリューム演算による劣化はほぼ皆無(ノイズ換算で-144dB程度)と考えて良いみたいです。

11月22日追記: WMP11はプラグインのボリューム演算を16ビットのint型で行っているようで、WMP12の場合に比べて少し劣化が増えるかもしれません(ノイズ換算で-90dB程度)が、それでも耳で聞き取れるような劣化ではないと思います。

 


このプラグインを使ってピークリミッタの発動が抑えられているかどうかを、いつもの差分抽出方で確認してみました。

プラグインが適用するゲインとして 0.9772 を入力しました。 (ほぼ -0.2dB)

一度OKして再度このプロパティを見ますと 0.98 に丸めて表示されてしまいますが、内部的にはもっと細かくゲインを保持しているようです。

このゲインを適用した状態で、ピーク一杯まで振れている音が沢山含まれている source_00db.wav をWindows Media Player で再生し、その音声を前回と同じ様にデジタルのまま録音します。 録音された波形が plugin_09772.wav。

 

前回まではオリジナル波形を位相反転させたものをそのままミックスしていますが、今回は位相反転したオリジナル側に -0.2dB のゲインを適用した上でミキシングします。

 

 

  「オリジナルを位相反転して振幅を0.9772倍にしたもの」 と
  「オリジナルをWMPのプラグインで振幅を0.9772倍して再生し録音したもの」
の差分を抽出した結果が、下図の下段のplugin_09772.wav*です。

上図の plugin_09772.wav* はズームを振幅方向に最大限まで拡大してありますが、前回検証で見られたピークリミッタによる音の改変はまったく見られません。
この状態で差分の中の最大振幅値を検索させると 「-2」(-84dB) と表示されました。 この程度のノイズであれば、普通に音楽を聴くぶんにはほとんど影響の無いレベルではないかと思います。

 

僕の個人的結論

このプラグインを使う事で、Windows Meida Player でも オーディオエンジンのピークリミッタが掛かっていない状態で音楽を再生する事が可能だと思います!!

(追記)・・・と思っていたら、.m4aや.mp4だと更にピークが高くてリミッタ掛かってしまった・・・
16bitの.wavやCDDA、.mp3では大丈夫みたいです。

 


音量調整プラグインの改良版

finevolume.zip 音量調整プラグイン(インストーラとピーク値の確認機能を追加)

上記zipファイルをダウンロードして開き、 Setup.exe を実行すればWindows Media Player のプラグインとしてインストールされます。

インストールすれば初期値のままで、音量を -0.131dB だけ小さくする処理が Windows Meida Player に組み込まれると思います。

8bit、16〜24bitの.wavファイル、CDDA、.mp3 ファイルの再生では、これでリミッターが回避できると思います。
一曲を通して再生して Limiting の赤ランプが一度も点灯しなければ大丈夫だと思います。
.m4a や .mp4 ファイルの場合はデコード後のピークが更に大きいものが多いようで、-1.5dB くらいまで下げないと回避できない場合もあるようです(X_X)
すんごいアナログ的ですね(笑)

 

参考: AV Watch 藤本健のDigital Audio Laboratory 「WMPにリミッター回避プラグイン

 

 

finevolumeプラグインを使う使わないに関わらず、WMPで良い音(というか原盤に近い音)を聞く上でとにかく一番重要なのは・・・

ここでコンテンツと同じサンプルレート (音楽ファイルは通常44100Hz、DVDの場合は48000Hz) を選んでおくという点です。
これが合っていませんとSRCによって音が劣化するだけではなく、インターサンプルピークによって瞬間的な振幅が原盤よりも大きくなってしまい、より深くピークリミッタを稼働させる事となってしまうようです。場合によっては+3dBもオーバーしてピークリミッタに送られてしまい、例えて言うならばコンプレッサーを1個余分に追加したような音に加工されて再生されてしまう場合もありますのでご注意を!


g200kgさんには、このプラグインによるリミッター回避アイデアの他にも、僕だけでは探し当てられそうにない貴重な資料を発掘してきて頂いたりと、今回の検証と公表を通じて大変お世話になりました。 本当にありがとうございました。

 

2012年11月20日 ありぱぱP

Windows Media Playerは音質が悪い?