録音・再生各オブジェクトの生成
デバイスには、特に全二重用というものがあるわけではなく、任意の録音・再生、2つのデバイスを組み合わせれば動作します。同一サウンドカード上のデバイスでも、異なるハードウェア上にあっても構いません。ただし運用するサンプリング周波数とチャンネル数を双方が支援している必要があります。
![]() |
|
デバイスの列挙
デバイスの列挙は、各デバイス毎に独立して行います。詳しくは、「ダイレクトサウンドによる録音」、「ダイレクトサウンドによる再生」を参照して下さい。
オブジェクトの作成
オブジェクトの作成は、録音と再生を個々に行う方法と、専用のDirectSoundFullDuplexCreate8()関数を用いる方法があります。
HRESULT WINAPI DirectSoundFullDuplexCreate8( LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice, LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, DWORD dwLevel, LPDIRECTSOUNDFULLDUPLEX* ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter)
![]() |
|
MSDNの「キャプチャデバイスオブジェクトの作成」のページに以下の記述があります。しかし筆者が行った実験の範囲では、キャプチャデバイスを先に作成しても動作しているようでした。サンプルプログラムでは安全のために再生デバイスの作成を先にしています。
再生デバイスオブジェクトとキャプチャデバイスオブジェクトを共存させたい場合は、キャプチャデバイスオブジェクトの作成と初期化を行う前に再生デバイスオブジェクトの作成と初期化を行うようにするか、またはDirectSoundFullDuplexCreate8を使う必要がある。