Platform SDK: DirectX

再生の概要

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

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

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

[C++]

データを正しいフォーマットに整えてセカンダリ バッファに送り込むのは、開発者の責任である。DirectSound には、サウンド ファイルやウェーブ リソースを解析する機能はない。しかし、関連するサンプル アプリケーション内に、このタスクを支援するコードが記述されている。詳細については、「ウェーブ ファイルの使い方」と、「リソースからのウェーブ データの読み込み」を参照すること。

アプリケーションは IDirectSoundNotify インターフェイスを通して、ストリーム バッファが新しいデータを受信する準備ができたときや、バッファのいずれかが停止したときにそのことを把握できる。カレント プレイ ポジションがこれらの位置のいずれかに到達すると、信号が送信される。代わりに、アプリケーションは再生カーソルの位置を定期的にポーリングすることもできる。

[Visual Basic]

短いウェーブ ファイルとリソースは、バッファが作成されるとセカンダリ バッファに直接ロードされる。さらに長いファイルでは、ファイルを解析してデータを送り込むのは開発者の責任である。詳細については、「ウェーブ ファイルの使い方」と、「リソースからのウェーブ データの読み込み」を参照すること。

アプリケーションは DirectX7.CreateEvent メソッドでイベントを作成してから DirectSoundBuffer.SetNotificationPositions メソッドを呼び出して通知位置を設定することにより、ストリーム バッファが新しいデータを受信する準備ができたときや、バッファのいずれかが停止したときにそのことを把握できる。カレント プレイ ポジションがこれらの位置のいずれかに到達すると、信号が送信される。代わりに、アプリケーションはカレント プレイ ポジションを定期的にポーリングすることもできる。

通知の詳細については、「再生バッファの通知」を参照すること。