第530回:「Windowsオーディオエンジンで音質劣化」検証その2

~WMPにリミッター回避プラグイン。Windows 8では改善も ~


 先日掲載した「第528回:Windowsオーディオエンジンで音質劣化」を検証 ~ASIO/WASAPI利用時と比較。劣化回避の方法は? ~」は、大きな反響をいただいた。やはりWindowsで音を再生させると音質劣化することが、目でハッキリと確認できたことは、筆者自身にとっても、また多くの人にとっても衝撃だったのだと思う。

 ただ、Windows Media Playerで再生する限り、改善のしようがないというのは、悲しい事実だったわけだが、その後、いろいろとアイディアをいただいた結果、解決方法も見えてきた。そこで今回は、続編ということで、音質劣化のなるべくない形で再生する方法を探るとともに、最新のWindows 8の場合についての検証も行なった。



■ Window Media Player用の改善プラグインをありぱぱ氏が作成

 まず、前回の記事についてのお詫びから。当初、タイトルおよび本文において「カーネルミキサー」という用語を用いた。これについて多くの方から「Windows Vista以降、カーネルミキサーなどというものは存在しない」という指摘をいただいた。確かに、Windows Vista以降、オーディオのアーキテクチャが変わり、呼び名もWindows XPまでの「カーネルミキサー」から「オーディオエンジン」と変更になっていたため、記事の表記のほうも後から訂正させていただいた。この点については、改めてお詫びしたい。ただ、まったく違うものに置き換わったというわけではなく、従来カーネルミキサーと呼ばれていた構造はそのまま残っている。実際、実験はWindows 7上で行なっており、その結果の音質劣化がハッキリ捉えられたわけだ。

 また、前回の記事でいろいろとご協力いただいた「ありぱぱ」氏のほうで、追加検証を行なった結果、音質劣化の原因はやはり、ピークリミッターが効いてしまっていることもハッキリした。詳細はありぱぱ氏のWebサイトの情報「カーネルミキサーのピークリミッタ挙動の解析」をご覧いただくのが早いと思うが、結論からいえば、先読み式のオーソドックスなピークリミッターであり、アタックとリリースのスロープの時間はだいたい300サンプル(6.8msec程度)とのことだった。

ASIO Windows Media Player Pluginでは、Windows Media Playerでのオーディオ信号をASIOへ流せる

 こうした検証は、主にTwitterを通じて、いろいろな方々とやり取りする中で、行なわれていったのだが、この議論に深く入ってきてくれたのが、以前、Webブラウザを使ったソフトシンセ「WebMidiLink」の記事で取材させていただいた、g200kgこと新谷垣内(しんやがいと)達也氏だ。議論の中、新谷垣内氏が、見つけ出してくれたのが「ASIO Windows Media Player Plugin」というWindows Media Player用のオープンソースのプラグイン。これは、Windows Media PlayerのオーディオDSPというところに組み込むことができるソフト。筆者もこうした存在をまったく知らなかったのだが、Windows Media Playerでのオーディオ処理の流れの途中に組み込むもので、その信号を横取りして、ASIOへ流そうというもの。ただ、新谷垣内氏によると、かなり動作が不安定とのこと。

 試しに筆者の環境で組み込んでみたところ、とりあえずASIOへオーディオを流すことはできたが、ストップボタンを押すと、Windows Media Player自体がハングアップしてしまう、という始末。その後はWindowsを再起動しない限り、Windows Media Player自体を動かすことができないなど、まともに使えるものではなかった。それでもなんとかASIO出力したものをキャプチャし、オリジナルと一致するのかをビットbyビットで比較してみた。比較に利用したのはefu氏のWaveCompareだ。ところが結果的にいうと、これがまったく一致せずだった。しかも、SoundForge上で波形を確認しても、明らかに違う。そもそも、スタート地点に入れておいた1サンプル分のマーカーすら消えてしまっているくらいなので、仮に安定して動いたとしても、まともに使えるのか怪しいところだ。


ASIO Windows Media Player Pluginを実際にWMPで試したWaveCompareでは一致しない結果に上がオリジナルデータ、下がASIO Windows Media Player Pluginを介した音をキャプチャしたもの

 続いて、新谷垣内氏が見つけ出してくれたのが、Windows Media Player用のプラグインを作るためのSDK。ここに音量を変化させるためのサンプルプラグラムがあるので、これを組み込んだらうまくいくということを教えてくれたのだ。詳細は新谷垣内氏のWebサイト「WMPのオーディオDSPプラグインのテスト」をご覧いただくのが早いだろう。そう、前回の結論では、MMEドライバを利用している場合、Windowsのミキサーの出力設定が100の場合はリミッターがかかるが、99にすればがかからなくなる。しかし、Windows Media Playerを使った場合やDirectSound経由で音を出力する場合は、ミキサーの音量を下げてもピークリミッターがかかってしまい、どうしても音が潰れてしまうという問題があった。

 そこで、Windows Media PlayerからWindowsのミキサー部であるオーディオエンジンへ送る前の時点で音量を下げておけば、いいのでは…という発想である。SDKにあるのは、ソースプログラムなので、新谷垣内氏の元でコンパイルを行ない、DLLファイルとしたものを組み込んで使ってみたところ、ピークリミッターがかからない状態で音を出すことができた。前回と同様にSoundForgeで逆相をミックスしたところ、キレイに波形を消すことができた。

Windowsのオーディオエンジンへ送る前に音量を下げることができた逆相をミックスしたところ波形が消えた

 ただ、このプラグインを組み込むには、コマンドラインから管理者モードで組み込む必要があるなど、インストールする方法が難しかったのも事実。そこで、ありぱぱ氏が、このサンプルプログラムを改造して、ピーク確認機能を搭載するとともに、インストーラを付けたものを作ってくれた。

 この改造版プラグインでは、デフォルトで-0.131dBほどに音量を下げてくれるようになっているので、インストールして、このプラグインをオンにするだけでWindows Media Playerの音質の向上が見込めるのは嬉しい限りだ。プラグインはここからダウンロードできる(ZIPファイル)ので、興味がある方は試してみるといいだろう。

ありぱぱ氏が、ピーク確認機能を搭載するとともに、インストーラを付けたものを作ってくれたプラグインをインストールして、有効にすると使える



AACファイルなどではピークを越えてしまうことがあった

 ただし、このプラグインのピーク表示を見ていると妙な現象も見えてきた。WAVファイルを再生している分には、これでいいのだが、AACファイルなどの非可逆圧縮ファイルを再生すると、それでもピークを越えてしまうことがあるのだ。これはどうもデコードする時点で、音量変化が生じるためのようだが、これはまた別の議題になりそうなので、今度改めて詳しく検証してみようと思っている。

 一方、iTunesの場合、音質を改善する方法はないのだろうか? 実は、こちらのほうがずっと簡単だった。Windows Media Playerに搭載されているボリュームは、Windowsのミキサーのボリュームと同じものであり、これを動かすと連動する形で、Windowsのミキサーも動く。それに対し、iTunesのボリュームは、Windowsのミキサーとは独立した別ものとなっているのだ。そこで、iTunesのボリュームを99に設定すれば、Windowsのミキサーは100であっても、リミッターがかからず、出力することができる。その結果を先ほどと同じようにSoundForgeで逆相をミックスする形でみても、キレイに打消し合うことを確認することができた。


WMPのボリュームを動かすと、Windowsのミキサーのボリュームも連動iTunesは、Windowsのボリュームから独立しているiTunesのボリュームを99にすれば、Windowsのミキサーが100でもリミッターがかからなかった

 ところで、前回の記事では、音を変化させず、そのままの状態で出力したいのであれば、ASIOやWASAPIを使うべきだと書いた。WASAPIに関しては、オンボードのサウンド機能でも、USB-DACでも標準で対応しているので、扱いやすくなってきている。しかしASIOに対応しているオーディオデバイスはというと、ほとんどはDTM系のオーディオインターフェイスであるため、これを持っていないという人が大半ではないだろうか? そこで、多くの人が使っているのが、ASIO4ALLというフリーウェアのドライバだ。これはASIO非対応の機材でも、ASIOのように見せかけるためのソフト。これも不安定なソフトであるため、あまり積極的にお勧めできるものではないが、これを使うことで、本当に音がよくなるのだろうか? 正しく言うのなら、Windowsのオーディオエンジンをバイパスし、音を変化させずに出力できるのだろうか?

 うまく動作してくれないデバイスも多かったが、とりあえずしっかりと動いてくれたのがUSB DAC。ここではTASCAMのiU2のS/PDIF出力を別のオーディオインターフェイスでキャプチャしてみた。その結果を、元のデータと比較してみた結果がこれだ。そう、ドンピシャで一致してくれたので、これはオーディオエンジンをバイパスしていることが証明できたわけだ。トラブルも多いソフトではあるが、安定して動いてくれるのであれば、それなりの効果は期待できそうだ。

ASIO4ALLiU2のS/PDIF出力を別のオーディオインターフェイスでキャプチャし、元のデータと比較


■ Windows 8「モダンUI」のプレーヤーでは問題を回避可能

 では、次の検証に移ってみよう。ここまでWindows 7で各種テストをしてきたわけだが、世の中の話題は10月26日にリリースされたWindows 8にシフトしている。筆者もプレリリース版から使ってみてはいるものの、どうにもこの新しいUIに慣れないというか、好きになることができないでいるのだが、文句ばかり言っていても仕方ないので、Windows 8上に同じ環境を構築して、各種テストを行なってみた。いろいろなところからの情報では、Windows 8のオーディオエンジンはWindows 7のものとまったく変わらないということだが、本当にそうなのかをチェックするのが目的だ。

 まず、Windows 8には2種類のプレーヤーソフトが入っている。一つはWindows 7と同じWindows Media Player 12、もう一つがWindows 8の新しいUIであるモダンUIに適合させた「ミュージック」というソフトだ。デフォルトでは、WAVやMP3などのファイルはミュージックに関連付られているため、デスクトップのUIで使っていても強制的にモダンUIに引き戻されてしまって使いにくくて困るのだが、ちゃんとマルチタスクで動いてくれてはいるから、測定する分には問題はないはず。きっとWindows Media Playerもミュージックも中身は同じで、Windows 7の結果とドンピシャ合致してくれるだろうとの予想のもと、それぞれで再生した結果をそのままキャプチャしてみた。

Windows Media Player 12Windows 8のモダンUI「ミュージック」ソフト

 さっそく、Windows 7のWindows Media Playerでの結果とWindows 8のWindows Media Playerの結果をWaveCompareで比較してみると、どうもまったく違うようだ。さらにWindows 8の2つのプレーヤー同士の結果を比較しても異なることが判明。試しにWindows 7とWindows 8のiTunesで比較しても違う結果になってしまった。ということは、オーディオエンジンがまったく同じであるわけではなさそうだ。では、これまで起こっていたピークリミッターが強制的にかかる問題を回避できるようになったのだろうか?

Windows 8と7のWMPをWaveCompareで比較Windows 8の2つのプレーヤーでも違いが出たWindows 8と7のiTunesでも違う結果に

 これについてのチェックは再びSound Forgeを使って逆相をミックスするわけだが、まず、Windows Media Playerを使い、ミキサーのボリュームを100の場合と99の場合でそれぞれ検証してみた結果がこれだ。結論からいうと、ビット単位ではWindows 7と微妙な違いがあったが、ピークリミッターが強制的にかかるという現象自体はまったく変わっていないようだ。では、ミュージックのほうは、どうか? こちらも100と99のそれぞれで行なってみた。これを見ると一目瞭然。ボリュームが100だと、やはりリミッターがかかってしまうが、99にすれば回避できるのである。これはMMEドライバ経由でオーディオエンジンに信号を送るのと同じ結果のようだ。つまり、ミュージックを使い、Windowsのボリュームを99以下に設定することにより、Windows Media Playerよりは問題のない音で再生することができるわけだ。UI的にはまったく好きになれないけれど、音的には意味があるようだ。

【Windows Media Player使用】

ミキサーのボリューム100の場合ボリューム99の場合

【ミュージック使用】

ボリューム100の場合ボリューム99の場合

 なお、Windows 8になっても、期待していたUSBクラスコンプライアント2への標準対応はされていなかったので、追加でドライバを入れないと、MacやiPadなどでは使える24bit/192kHz対応のUSB DACが使えないなど、がっかりな点も多いことは確か。とはいえ、標準環境での音楽再生という点では、問題が少し軽減されているようだ。

 以上、今回は先日の記事の続編としてテストを行なってきたがいかがだっただろうか? ありぱぱ氏や新谷垣内氏による検証結果を見ると、まだまだ不可解な現象もいろいろあるようなので、引き続きWindowsの音楽再生環境については、検証を続けていきたいと思っている。


(2012年 11月 26日)

= 藤本健 = リクルートに15年勤務した後、2004年に有限会社フラクタル・デザインを設立。リクルート在籍時代からMIDI、オーディオ、レコーディング関連の記事を中心に執筆している。以前にはシーケンスソフトの開発やMIDIインターフェイス、パソコン用音源の開発に携わったこともあるため、現在でも、システム周りの知識は深い。
 著書に「コンプリートDTMガイドブック」(リットーミュージック)、「できる初音ミク&鏡音リン・レン 」(インプレスジャパン)、「MASTER OF SONAR」(BNN新社)などがある。またブログ型ニュースサイトDTMステーションを運営するほか、All AboutではDTM・デジタルレコーディング担当ガイドも務めている。EPUBマガジン「MAGon」で、「藤本健のDigital Audio Laboratory's Journal」を配信中。Twitterは@kenfujimoto

[Text by藤本健]