DirectSound
DirectSoundはマイクロソフトが提供するDirectXのソフトウェアの一部品であり、Windowsに搭載されている。DirectSoundは、アプリケーションとサウンドカードとの間に直接的なインタフェースを提供し、アプリケーションが音や音楽を鳴らせるようにするものである。DirectSoundはオーディオデータをサウンドカードに渡す機能に加えて、録音や音をミキシングするのに必要な機能も数多く提供している。例えば、サウンドにエフェクト(リバーブやエコー、フランジングなど)を付加する機能や、再生速度を変化させるためのハードウェアで制御できるバッファや、3次元空間内で音の鳴っている位置を変化させる機能(3次元立体音響)、マイクロフォンやその他の入力機器から録音する機能や、録音中にエフェクトを付加するのを制御する機能などがある。
また、DirectSoundでは複数のアプリケーションがサウンドカードに同時にアクセスする便利な方法も提供している。この3次元空間的に音を鳴らすことができる機能によって、ゲームに新次元の楽しみをもたらす。またゲーム内でのイベントに即座に反応して、音を鳴らすスクリプトを変更する機能も提供している。すなわち、ゲーム内のアクションがヒートアップしてきたらそれにあわせて音楽のリズムも速くすることができる。
数年間の開発の後、今日のDirectSoundは非常に成熟したAPIを持ち、複数チャンネルを用いた再生や高精細な音を再生できる機能など、多くの役に立つ機能を提供している。DirectSoundはゲームに使われるように設計され、プロが使うオーディオアプリケーションでは今やこれらの様々な機能を利用している。
目次 |
DirectSound3D [編集]
DirectSound3D (DS3D)はWindowsでの標準3DオーディオとしてDirectXに追加されたもので、1996年、DirectX 3に導入された。
DirectSound3Dは、ソフトウェア開発者がそれぞれのオーディオカードメーカーに合わせたコードを書く代わりに、単一の標準化されたオーディオAPIを書くことで対応できるようにしている。
DirectX 5では、DirectSound3DはDirectSound3Dをアクセラレーションするサードパーティー製の3Dオーディオアルゴリズムを使う複数のサウンドカードを、マイクロソフトが用意した方法を用いて、扱うことができる能力を持つ。この機能を使えば3Dオーディオライブラリを分離する必要はなくなる。
DirectX 8ではさらに開発が進み、DirectSoundとDirectSound3D (DS3D)は統合されてDirectX Audioと呼ばれるようになった。
誤解されやすいが、DirectSound 3Dの3D音源は、エコー、リバーブ等の環境音を模倣するエフェクトと、リスナーの位置と音源(モノラル)の位置関係を簡易に計算するライブラリが主体である。やっていることは、旧来、ステレオPCM音源のパンとボリュームを自前で調整することで、擬似的に音源の位置(音像)を表現していたが、これをライブラリとして吸収しただけである。したがって、実際の空気中を伝播する音の物理そのものを、シミュレートして計算しているわけではなく、遮蔽や反射などは考慮されていない。
Windows Vista [編集]
Windows VistaはUniversal Audio Architectureに基づいた完全に書き直されたオーディオスタックを特徴とする。オーディオスタックを再設計してアーキテクチャを変えた結果、DirectSoundからオーディオドライバへの直接のパスが存在しない形になった。DirectSoundとMMEのような他のAPIはWASAPIインターフェイスを用いてエミュレーションされている。すなわち、DirectSoundはマイクロソフトのソフトウェアミキサ上でエミュレーションモードで動いている。エミュレータはハードウェア抽象化がされていないので、DirectSoundをアクセラレーションできるハードウェアはない。これはDirectSoundのアクセラレーションに依存しているハードウェアないしソフトウェアのパフォーマンスが以前より下がってしまうことを意味する。しかし、よりパワーのあるハードウェアを使えば、パフォーマンス上の問題はないと考えられる。ただし、DirectSound3Dを使ってハードウェア的に3Dオーディオエフェクトをかけることはできなくなっている。
ASIOやOpenALのようなAPIは、Windows Vistaのアーキテクチャ変更による影響を受けないので、サウンドカードのドライバがこれらのAPIに対応すれば、サウンドデバイスのアクセラレーション機能を利用することができる。 アプリケーションがこれらのアクセラレーション機能を使うには、DirectXやMMEを使わずにASIOやOpenALのAPIを使うようにプログラムを変更する必要がある。
Windows にはもうひとつ Kernel Streaming という API がありミキサを通らずにサウンドデバイスへアクセスできる。この方法で ASIO4ALL というプロジェクトが ASIO 非対応のデバイスで ASIO を使えるようにしている。
もうひとつの方法として、アプリケーションが使うオーディオスタックを差し替えて、OpenALを使わせてしまうという方法がある。この方法で Creative Labs 社の Creative ALchemy Projectというプロジェクトが DirectSound のアクセラレーションをサポートしている。
Xaudio [編集]
Xbox 360とWindowsを統合するために、マイクロソフトは、新しいアプリケーションをXaudioとXACTのようなXboxと同等なオーディオAPIに移行してもらうよう積極的に活動をしている。2007年の終わり頃から、マイクロソフトはDirectSoundをXaudio2に置き換える予定である。Xaudio2は、クロスプラットフォーム(WindowsとXbox)で共通に使える低レベルオーディオAPIであり、デジタル信号処理を最適に行うために設計されたXbox専用のAPIであるXaudio APIをさらに進化させたものである。Xaudio 2はWindows XPやWindows Vista、そしてXbox 360上で利用できる、Xaudio 2はXACTを通してハイレベルなオーサリング/再生ができ、X3DAudioライブラリを通して3D機能を提供している。XACTエンジンは高レベルオーディオライブラリであり、Xbox上ではXaudio、Windows XP上ではDirectSound、Windows Vistaでは新しいオーディオスタックを使って書かれている。X3DAudioはWindowsとXboxの両方のプラットフォーム上で利用可能な、空間音響用ヘルパーライブラリである。
Xaudio 2はXACTのような高レベルオーディオAPIのために、信号処理を使って特別なエフェクトを行う。いくつかの機能を以下に列挙する。
- 声から音データを分離する
- サブミキシング
- Multi-rate processing
- 1音声毎のフィルタリング
- Programmable voices
- エフェクト処理、サンプルレート変換(SRC)
- ソフトウェアDSP
- エンハンストサラウンドサウンド(マルチチャンネル)と明示的なマルチチャンネルpanning/mapping
- ネイティブな圧縮データをサポート
- 分離かつ置換可能なライブラリによる3Dオーディオの処理。Xaudio 2はマルチチャンネルスピーカーを扱い、X3DAudioライブラリはスピーカーボリュームと他の様々なパラメータを入力することで、出力とリスナーの座標を変形することができる。
Windows CE [編集]
DirectSoundはWindows CEのバージョン4.2までサポートされているが、5.0になってから削除された。Windows CE 6.0はDirectSoundをサポートしていない。代わりにWaveform Audio APIを使ってアプリケーションを書き直すことが薦められている。