Microsoft DirectX 8.0 (C++)

DirectSound の再生の概要

DirectSound オブジェクトはデバイスを表し、そのデバイスを管理し、サウンド バッファを作成するために使用される。

1 つのサウンド デバイスに対して複数のアプリケーションが DirectSound オブジェクトを作成することができる。入力フォーカスがあるアプリケーションからほかのアプリケーションへ移動する際に、オーディオ出力はあるアプリケーションのストリームからほかのアプリケーションのストリームへと自動的に切り替わる。したがって、入力フォーカスが移動する際に、アプリケーションはバッファの再生と停止を繰り返す必要はない。

DirectSound バッファ オブジェクトは、サウンド データを保持するバッファを表す。バッファ オブジェクトは、サウンドの再生の開始、停止、一時停止、周波数やフォーマットなどの属性を設定するために使われる。

プライマリ サウンド バッファは、リスナーが実際に聞くオーディオを保持する。各セカンダリ サウンド バッファは、1 つのサウンドまたはオーディオ ストリームを保持する。DirectSound は自動的にプライマリ バッファを作成するが、セカンダリ バッファはアプリケーションが作成しなければならない。セカンダリ バッファ内のサウンドが再生されると、DirectSound はプライマリ バッファ内でこれらをミキシングし、出力デバイスへ送り出す。DirectSound がミキシングできるバッファ数は処理時間にのみ制限され、処理時間が許す限りミキシングすることができる。

短いサウンドは全体をバッファにロードし、いつでも単純なメソッドの呼び出しによって再生できる。長いサウンドはストリーミングする必要がある。アプリケーションでは、再生カーソルの位置をポーリングしたり、再生カーソルが特定の位置に到達したときに通知を要求することによって、バッファに入れるデータをストリーミングしなければならない時期を確認できる。

データを正しい形式に整えてセカンダリ バッファに送り込むのは、開発者の責任である。DirectSound には、ウェーブ ファイルやリソースを解析する機能はない。しかし、SDK サンプル アプリケーション内に、このタスクを支援するコードが記述されている。