テストに使ったWAVファイルそして、もうひとつ用意するのがオーディオ素材。何でもいいのだが、分かりやすいのは、音圧を高めに設定した曲。先日購入したCDからリッピングしたWAVファイルをひとつ生成しておいた。実験時間節約のため、曲は頭から1分程度に予めカットしておいた。今回の実験では、オリジナルの音源と再生した結果にどんな違いが出るかを調べるのだが、基本的には以前の記事「MP3圧縮で、どんな音が失われるのか」で使ったのと同じ方法。再生した結果の音の位相を反転したものをオリジナルとミックスし、差分を浮かび出させるという手法である。以前苦労したのは、その2つのタイミングを合わせることだったが、曲の頭に1サンプル分のクリックを入れておき、そこに合わせ込めばピッタリ合う。Forgeの得意とするところなので、予めこうした目印をつけておいた。Forgeで録音する。この際、Windowsの「サウンド」で、QUAD-CAPTUREを「既定のデバイス」として設定しておく。この際、別の音が紛れ込まないように、QUAD-CAPTURE側のデジタルミキサーで完全にシャットアウトしておいた。別の音が紛れ込まないように、QUAD-CAPTUREのデジタルミキサーで遮断また、ここで非常に重要なのがサンプリングレートについて。カーネルミキサーには自動でサンプリングレートをコンバートする機能があるが、そんな重要なことをMicrosoftが作ったカーネルミキサーに任せたくないというのも事実。オーディオ機器メーカーも、レコーディング機器メーカーもサンプリングレートコンバートのために、さまざまなアルゴリズムを開発し、それをベースにした製品が存在している。したがって、カーネルミキサーにサンプリングレートコンバートをさせると問題が発生しそうではある。今回はその問題には触れないようにするため、QUAD-CAPTURE側のサンプリングレートを44.1kHzに設定し、サンプリングレートコンバート機能が働かないようにしておいた。2つ目に重要なのがカーネルミキサーの音量レベル設定だ。できるだけストレートに音を出し、カーネルミキサーの影響を受けないようにするためには、音量変化のない0dBに設定すべきだ。カーネルミキサーのレベルは0~100というパーセント表示であり、0dBがどこになるかといった説明はない。これは測定してみれば分かるとおり、100%が0dBとなっている。Forgeでそのまま録音してみた。Forgeで録音マーカーとして打った1サンプル分のクリックが入っている録音した結果の頭を見ると、確かに先ほどマーカーとして打った1サンプル分のクリックもしっかり入っていることが確認できる。これを利用し、前述の方法で位相反転・ミックスする。すると、どうだろうか見事にキレイに音が打ち消しあって消える。見ると、なにかプチプチとしたゴミのようなものが見えるのだ。ここで縦軸、つまりレベルを拡大表示させてみたところ、問題があることが発覚した。-38dB程度のレベルであきらかな差分の波形が紛れているのだ。ためしに、これを再生してみると、チチッといったノイズが聴こえるし、音量を上げるとかなりひどいノイズとなって聴こえる。これは明らかに大きな問題である。音質変化にピークリミッタが影響どこで、こうした問題が起こっているのかを確認するため、オリジナル音源と時間軸を揃えて上下に並べてみると、どうもピークリミットに当たっているところで発生しているっぽい。拡大して見ると、確かにオリジナルが0dBになる前後で発生していることが分かる。波形を見比べてみると、まさにそのピーク前後の相似形となっていることが確認できるのだ。オリジナルが0dBになる前後で発生していたありぱぱ氏と話をしてみると、これはピークリミッタが効いているための現象とのこと。知られていないがWindowsのカーネルミキサーの後段にはピークリミッタが設置されており、すべての音がここを通るようになっているというのだ。いえ、この曲を再生する場合、そもそも0dBを超えるはずがないわけだから、ここでリミッタをかける必要はない。現在の楽曲の多くは目一杯の音圧を出すために、0dBギリギリに上げる勝負をしているわけだが、そのギリギリで作った成果をWindowsのカーネルミキサーによってぶち壊されるというのは誰もが納得のいかないところだろう。それは、Windowsでは複数のソフトを同時に鳴らすことができるようになっているからだ。複数ソフトから音が入ってきた結果、ピークを超えてクリップしてしまうのを避けるために入れているようなのだが、1つしか鳴っていなくても、強制的にかかってしまうというのは問題。音質的に丁寧な処理がされているわけでもないから、明らかに音が濁ってしまうのだ。Playerに限らず、iTunesでも、foober2000やWinAmpの標準の設定で行なってもまったく同じように発生するから困ったものだ。これについては、foober2000にASIOプラグイン、WASAPIプラグインを組み込んだ上で再生し、先ほどと同様に位相反転・ミックスしてみた。その結果は、ASIOもWASAPIも同様で、先ほどのような差分はまった見えない。定説どおり、カーネルミキサーを通すと音が劣化するが、ASIOやWASAPIを利用すれば、そうした問題が起こらないということになる。それにしても、ここまでひどい音の劣化はWindowsのバグといっていいもの。Microsoftに修正をしてもらいたいところだが、そもそもオーディオ系に興味を持たないMicrosoftにこれを期待するのは難しそう。ここで、ありぱぱ氏から提案があったのが出力レベルを100%ではなく99%にすればピーク問題が回避できるのではないか、ということ。ありぱぱ氏自身が実験した結果、それが実証できたというのだ。出力レベルを99%に落としたところもちろん、99%に落とすということは、音量変化が起こっており、ここで音質劣化を起こすということも否定できない。いえ、単純な音量変化だから、いくらMicrosoftのプログラムとはいえ、そこまで、ひどいことは起こらないだろう、という仮定での実験だ。音量を下げているから、先ほどとまったく同じように位相反転してミックスしたのでは、うまくいかない。そこで、99%にした際の音量変化がどうなるのかを単純な信号を利用して測定しておいたのだ。その結果、実際には98.259%となっていることが分かった。反対にいえば、取り込んだ音にその逆数である101.772%を掛けた上で、反転させてミックスすればいいはずだ。ありぱぱ氏と同じ結果になるものか自分でも試してみたのだが、なぜか私のほうでは、100%のときと同様の現象が起きてしまう。96%、90%、70%程度にしても変わらず、50%以下にすると、ようやく消えるという状況だった。二人の間で違いが起きたのか...。当初、ありぱぱ氏が48kHzのオーディオソースを使っていて、筆者が44.1kHzのものを使っていたため、そこに問題があるのでは......と48kHzのソースを試してみたのだが、結果は同じ。おかしいと思って、お互いで確認してみたところ、再生していたソフトに違いがあったのだ。Playerを使っていたのに対し、ありぱぱ氏側は同じMMEドライバを使うのだからということで、DAWでの再生を行なっていたようなのだ。Playerでテストしてもらったところ、同じ結果となった。X1のMMEモードで試してみた。すると100%のボリュームでは先ほどと同じ結果だが、99%にするとリミッタ問題は解消されることが確認できたのだ。Playerと同じ結果となってしまう。WinAmpの場合は99%にすると解消されるのだ。不思議に思っていたところ、ありぱぱ氏から思いがけない結論が持ち出された。X1やWinAmpが出力しているのはMMEドライバだったのだ。確かにfoober2000での標準設定では頭に「DS」という文字が付いていた。ご存知のとおり、DirectSoundがゲーム用に作られたMicrosoftのWindows拡張機能であり、エフェクトが利用できるほか、レイテンシーも小さくすることができる。いえ、カーネルミキサーを通すという面では同じだから、音質面では同じと思っていたのだが、違いがあるようなのだ。ここでハッキリ確認できたのはミキサーレベルを100%にしていると、MMEもDirectSoundもほぼ同じ結果であるが、99%に設定した際はMMEでピークリミッタが効かなくなりここでの音質劣化は避けられるということだ。こんな仕様になっているのか、ますます納得がいかないところだが、これがWindowsのバグというか仕様ということなのだろう。他にも気になる点がいろいろここまでの現象を考えると、やはりWindowsで音楽を再生するのであればASIOやWASAPIを使うべきであるということ。DirectSoundかMMEドライバかを選択可能であれば、間違いなくMMEドライバを選択すべきである。PlayerやiTunesなどを使う場合には、強制的にDirectSoundが使われるために避けようがない。32bit版の場合、iTunesの出力はQuickTime制御となり、ここでWASAPI共有モードというものを設定することが可能。この場合もカーネルミキサーは通るのだが、DirectSoundのような問題は避けられるのかもしれない。これについてはまだテストできていないが、近いうちに試してみるつもりだ。幸いにしてMMEドライバが選択できた場合は、Windowsのミキサーの設定を100%ではなく99%以下に設定すべきである。これによってピークリミッタ問題は回避できるのだ。多くのソフトはDirectSound経由となってしまうのが難しいところ、古いソフトやWinAmpなどではMMEドライバが選択できるようになっているので、この辺を使うのがよさそうだ。冒頭でDAWを再生ソフトに使っている人がかなりいる旨のことを書いたが、この場合、ASIOを選択しなければ、通常はMMEドライバ出力となる。したがって、音量レベルを100%に設定しない限りはDirectSoundでの出力よりも音がよくなりそう。この辺がマニアの方々に評価されているのかもしれない。Laboratoryとしてももっと早く見つけ出すべきだったと感じているところだ。今回の実験ですべてが分かったわけではない。OSによる違いはどうなのか、サンプリングレコートコンバートをすると、どの程度音質が劣化するのかなど、もっと検証してみたいこともいろいろある。これらについても、今後実験を重ねつつ、記事にしていきたいと思っている。リクルートに15年勤務した後、2004年に有限会社フラクタル・デザインを設立。リクルート在籍時代からMIDI、オーディオ、レコーディング関連の記事を中心に執筆している。以前にはシーケンスソフトの開発やMIDIインターフェイス、パソコン用音源の開発に携わったこともあるため、現在でも、システム周りの知識は深い。SONAR」(BNN新社)などがある。AboutではDTM・デジタルレコーディング担当ガイドも務めている。Journal」を配信中。Twitterは@kenfujimoto。LaboratoryWASAPIに対応したiTunesの音質を検証。