ゲームプラットフォームとしての観点から「Windows Vista」を評価し,移行タイミングを本気で考える本特集。第3回,最終回となる今回は,意外にもあまり知られていないが,実は従来と比べて仕様が大きく変更されている,サウンド周りについて考えてみよう。
最近のゲーマー向けPCや自作向けマザーボードでは,標準でアナログのマルチチャネル出力に対応しているものが少なくないが,Windows Vistaでは,既存のゲームにおいて,2chステレオ出力以外が利用できなくなった
「グラフィックスと同じで,結局ドライバのデキなんでしょ」と思うことなかれ。Windows Vistaにおいて,サウンド周りの仕様は,単にドライバ周りに変更があっただけではない。ゲーマーに深刻な影響を与えかねない「DirectSound HALの廃止」(HAL:Hardware Abstruction Layer,ハードウェア抽象化層)というトピックが存在するのだ。詳しくは後述するが,DirectSound HALの廃止によって,Windows Vista上で既存の3Dゲームタイトルをプレイするとき,マルチチャネルスピーカー出力やバーチャルヘッドフォン機能などが使えなくなってしまっているのである。
なぜMicrosoftは,DirectSound HALを廃止したのだろうか? それを理解するため,まずはWindows Vistaのサウンド環境で「何がどう変わったのか」から見ていくことにしたい。
Windows Vistaでサウンド周りの仕様が一新された事情には,第1回で指摘したグラフィックスとよく似たところがある。
Windowsにおけるサウンド環境の基礎が作られたのは16bit OS時代だ。この頃に(PCMやMIDIなどといった)サウンドデータをアプリケーションソフトからサウンドカードへ送り込むための「API」(Application Program Interface,OSの機能の一部)として実装されたのが始まりである。これによって,PCで動画や音声,画像を簡単に扱えるようになり,“さまざまなメディア”というところから,「マルチメディア」という言葉がブームになったりもした。
若い読者にはピンと来ないかもしれないが,当時は動画や音声,画像をPCから扱えるということ,それ自体にインパクトがあったのだ。そこでMicrosoftは「Windows 3.1」で「MME」(MultiMedia Extention)という機能拡張を行い,マルチメディアをアプリケーションソフトから利用する枠組み「MCI」(Multimedia Control Interface)を整備したりしている。
以上をWindowsにおけるサウンドの「第1次標準化」と定義づけた場合,「第2次標準化」に当たるといえるのが「DirectSound」ということになるだろう。
MCIや,それ以前の古典的なサウンド出力では,特定のアプリケーションが複数の音を同時に出力できない(正確には「やろうと思えばできるが非常に難しい」)という制限があった。つまり,BGMと効果音など,複数の音を重ねて出力しなければならない局面が山ほどあるゲームにおいて,これが自由にならなかったのである。致命的といっていい。
そこで,「Windows 95」から提供された,ゲーム(やマルチメディア)向けのAPI「DirectX」では,ゲームで使いやすいサウンド機構として,「DirectSound」という仕組みが組み込まれた。DirectSoundは,GDIに対するDirect3Dと同じような位置づけで,ゲームなどにおいて,複数の音を重ねて出力したりといったことが,容易にできるようになっている。
EAXはバージョンアップが重ねられ,2007年3月時点の最新版は「EAX ADVANCED HD 5.0」になっている
その後,1996年のDirectX 3.0で導入されたのが「DirectSound 3D」である。DirectSound 3Dでは,ヘッドフォンや4スピーカー(以上)のサウンド環境において,“音の位置”をゲームからコントロールできるサウンド機構だ。Direct3Dと相性が良く,3Dオブジェクトの動きに合わせて音をコントロールしやすいため,多くの3Dゲームでサポートされるようになった。
また,DirectSound 3Dにはない機能を付加する補完的なAPIとして,Creative Technology(以下Creative)の「EAX」(Environmental Audio eXtensions)なども登場した。EAXは,残響や音の反射など,DirectSound 3Dでサポートされていない効果をゲーム内で実現可能で,複数のゲームタイトルで利用されている。このあたりは4Gamer読者なら,体験的に知っているのではないだろうか。
その後,一部のサウンドカードメーカーは,サウンド再生用ハードウェアアクセラレーションをサポートするようになった。読者もご存じだろうが,サウンドカードには,DirectSound 3DやEAXのハードウェアアクセラレーション機能が組み込まれている。ソフトウェア処理では,重ねられる音の数が増えたり,高度なリアルタイムエフェクトをかけたりしようとすると,どうしても負荷が高くなってしまうこともあって,DirectSound 3DやEAXのハードウェア処理用プロセッサ「DSP」(Digital Signal Processor)をサウンドカードに組み込むようになった,というわけだ。
これに合わせて,冒頭で軽く触れたDirectSound HALが用意された。HALとは,ハードウェアとアプリケーションの間を取り持つソフトウェアモジュールのことで,DirectSound HALが導入されたことによって,サウンドデバイス(=ハードウェア。サウンドカードやオンボードのサウンド機能のこと)がDirectSoundやDirectSound 3D,EAX(=ソフトウェア)のアクセラレーションを行えるようになったのである。
さて,ここで重要なのは,これらのAPIが長年にわたって使われ続けてきたということである。16bit Windows時代のMCIも,Windows 95時代に仕様が固まったDirectSoundやDirectSound 3Dも,Windows XPから利用可能だ。
少し言い過ぎかもしれないのを断ったうえで続けると,Windowsのサウンド環境というのは「成り行きに任せて過去の互換性を維持してきた」ようなところがある。EAXに代表される,DirectSound 3Dを補完するような拡張(や,ゲームとは関係ないが,音楽制作用APIとして用意された拡張である「ASIO」など)が登場したのは,Microsoftが,Windowsにおけるサウンド環境の整備にあまり熱心でなかったことの顕れといっていいかもしれない。
以上,Windowsにおけるサウンド周りの歴史を追ってきたところで,Windows XPにおけるサウンド出力の流れを下の図にまとめてみた。MCIなど標準的なWindowsのサウンド入出力(図中では「DirectSound以外のサウンドAPI」としている)から送られてくるサウンドデータ,そしてDirectSoundやDirectSound 3Dから送られてくるゲームなどのサウンドデータを受け取って,WDMドライバ(=サウンドドライバ)がサウンドデバイスに流し込んでいるだけである。
過去の互換性を維持するためなので仕方がないといえば仕方がないのだが,この仕組みでは,「サウンドドライバの先がどうなっているのか」がさっぱり分からない。サウンドデバイスのスペックや,その先につながっているスピーカーやヘッドフォンなどといったユーザーのサウンド環境が,ゲームなどのアプリケーションからは完全なブラックボックスになってしまっているのだ。
そのためサウンドデバイスのメーカーは,それこそスピーカーとヘッドフォンのどちらがつながっているのかをユーザーに指定させたり,接続した機器に合わせた,より細かなサラウンドサウンド設定を行わせたりするソフトウェアを独自に用意することになり,結果として,その構造や設定方法は,メーカーごとてんでバラバラになっている。