インデックス

通常Windowsで音楽を再生したり、アプリケーションの効果音などを再生する場合、それらのデータは一旦Windows内部のオーディオエンジンに渡されます。
ここで複数のアプリケーションから同時に音声再生の命令が出た際などの合成処理を行った後、サウンドドライバに渡し、DACでアナログに変換されて音声信号として出力されるわけです。

しかしこのオーディオエンジンに渡されたデータをミキシングする際に発生する処理などで、データの出力までに若干の遅延(レイテンシ)が生じたり、入力されたデータと出力されたデータで相違が出る場合があり、これが音質の低下に繋がる場合があります。
Windows Vista以降ではオーディオAPIとして新しくWASAPI(Windows Audio Session API)というものが提供され、排他モードと呼ばれる機能があります。
これは任意のアプリケーションが排他的、つまり他のアプリケーションの音声再生命令を無視してサウンドドライバをコントロールできる機能で、これを利用することで対応するアプリケーションは音声信号のデータを直接サウンドドライバに渡せるようになりました。
これによって、OSの中間処理によるデータの誤差を無くし、遅延を低く抑えることが出来、結果的に高音質での音楽再生が可能になります。

高音質での再生を期待できるWASAPIの排他モードですが、その反面、まだ対応するアプリケーションが少ないことや、排他モードで動作している音楽再生ソフトがある場合に他のアプリケーションのサウンドが全く再生されないなどの難点もあります。
逆に言えばアプリケーション側が対応すればハードウェアを問わないというメリットもありますが。
劇的に音質が改善されるということは無いと思われます。私は正直大して違いが分りませんが、せっかくなので・・・と使っています。
結局の所これを利用するかどうかはユーザー次第といったところでしょう。

今回はWASAPIの排他モードを利用した出力に対応するプラグインが提供されている「foobar 2000」での設定方法を紹介し、併せてこれを利用する際のメリットやデメリットも解説します。


今回は既にfoobar 2000がインストールされていることを前提に解説します。

1,WASAPI outputプラグインをインストール

foobar2000: Components Repository - WASAPI output support
上のリンクからWASAPI outputプラグインをダウンロードできます。
ダウンロードしたアーカイブ内の「foo_out_wasapi.dll」をfoobar2000インストールフォルダ内の「components」フォルダ内に入れればプラグインのインストールは完了です。

2,出力デバイスを設定

メニューバーの「File→Preferences」から設定ウィンドウを開き「Playback→Output」で出力デバイスの選択画面を開きます。
「Device」にあるボックスで「WASAPI : ○○」となっているデバイスを選んで下さい。
これでWASAPI 排他モードで出力するための設定は完了です。

出力デバイスをWASAPIと付いているものの中から選択します。

参考画像

しかし、大抵の場合これで正常に再生できることは少ないかと思われます。
以下、foobar 2000での主なエラーメッセージとその対処法を載せますので、設定時の参考にしてみて下さい。

Unrecoverable playback error: Unsupported buffer size (0x88890016)
バッファサイズが大きすぎます。先ほどの出力デバイス選択画面にある「Buffer length」の値を数百~1500程度まで下げてください。サウンドデバイスによって設定できる最大値は異なります。

Unrecoverable playback error: Unsupported stream format: 44100 Hz / 24-bit / 2 channels
入力された音声信号の周波数、ビット数、またはチャンネル数にデバイスが対応していません。
サードパーティー製のサウンドドライバーで、設定用アプリケーションが用意されている場合は周波数を変更(大抵は44100Hz)したり、ビット数を下げたりしてみてください。

なお、参考までにWASAPIについてのMicrosoftの技術資料や解説などは以下をご覧下さい。
楽しいハック講座 (4) Windows7 オーディオアーキテクチャの概要
About WASAPI (Windows)

スポンサードリンク