ここでは、DirectX Audioの機能とプログラミングの概要について、簡単に解説する。
DirectX Audioは、DirectXのサウンド系機能を提供するコンポーネントである。
DirectX Audioは「DirectSound」「DirectMusic」の2つの機能から構成されている。これらはDirectX7までは独立した別々の機能だった(DirectSoundはWAVEファイルを、DirectMusicはMIDIファイルを再生)が、DirectX8では機能の統合が図られ、「DirectX Audio」というカテゴリにまとめられた。
具体的にはDirectMisicが改良され、MIDIデータだけでなくWAVEデータもMIDIデータとして同様に扱うことができるようになったこれにより、オーディオを再生するプログラムを作成するユーザは、DirectMusicだけを扱えばよくなったため、プログラミングが容易になった。
DirectX Audioは、主に次のような機能を提供する。
このように、DirectX Audioの機能は非常に多彩だが、ここでは赤で示した基本的な部分のみを使用する。
DirectX Audioのプログラミングで使用する様々な用語について、最低限必要なものを簡単に紹介する。
DirectX Audioが再生できる基礎的なデータをオーディオ・データ(ソース)と呼ぶ。標準で扱えるデータは次のとおり。
いずれの場合も、独立したファイルとしてだけでなく、リソース・データとして用意することもできる。ここではWAVEファイルとMIDIファイルを独立したファイルとして扱う方法を解説する。
オーディオ・データを読み込むために使用する。ローダーはキャッシュにより検索やロードを効率よく行うことができる。通常、アプリケーションではローダーのインターフェイスをグローバルに1つだけ作成する。
オーディオ・データはファイルのほか、リソースからもロードできる。
ローダーによってロードされたオーディオ・データはセグメントにカプセル化して扱う。一般に、セグメントは1つのファイルなど、再生される1つの単位をあらわす。
セグメントを再生するたびに、セグメント情報(DirectMusicSegmentState8)が作られる。このインターフェイスを通じて、セグメントの再生状態やオーディオ・パスを取得できる。
オーディオ・パスとは、パフォーマンスからシンセサイザへのサウンドの流れを制御するものである。オーディオ・パスにはサウンド・バッファなどの複数のオブジェクトが含まれる。オーディオ・パスに含まれているサウンド・バッファなどを操作することにより、ボリュームや各種エフェクト、3Dサウンドなどの設定が行える。
シンセサイザが音色を再生するには、その音についての情報が必要である。その情報はDLSコレクションに格納されている。DLSコレクションはバンドに関連付けられ、バンドがダウンロードされたときにシンセサイザにダウンロードされる。
1つのシンセサイザしか使わないほとんどのアプリケーションでは、すべてのバンドをパフォーマンスにダウンロードすればよい。
パフォーマンスはソースからシンセサイザまでのデータの流れ全体を管理する。通常、アプリケーションではパフォーマンス・オブジェクトをグローバルに1つだけ作成する。
WAVE以外のMIDIデータなどはシンセサイザでWAVEデータが作られ、再生される。DirectMusicでは、デフォルトのソフトウェア・シンセサイザとしてMicrosoft Software Synthesizerを使うことができる。
DirectX Audioにおける再生は、次のような流れになる。
上記処理をいちいち既存のプログラムに追加するのは面倒なので、ラッパー関数としてNKC_DAudio.cppというソースファイルにまとめた。授業ではこのファイルをプロジェクトに追加して使用することにする。
次章では、NKC_DAudio.cppの組み込み方法を解説する
| NEXT(NKC_DAudio.cppファイルの組み込み) |