DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DirectSoundでのストリーミング再生

環境/言語:[OS : Windows XP Professional / 言語 : VB.NET + DirectX 9]
分類:[.NET]

2005/02/28(Mon) 17:29:27 編集(投稿者)

VB.NET + DirectX9 でプログラミングをしています。
WAVEファイルのストリーミング再生を行うため、
DirectX SDK のサンプルの中の
『AdjustSound』と『CaptureSound』を参考に、
ストリーミング再生できるところまでは作れました。

しかし、再生中に別のアプリで音が出ると、
再生中の音が飛ぶのです。
具体的には以下の通りです。
1.何も音が出ていない状態で、アプリ(以下、A)起動
2.別アプリ(以下、B)(音が鳴るものならなんでも)で音を鳴らす
3.Aで再生中の音が1秒弱先へ飛ぶ
4.Bでさらに音を鳴らす⇒Aの再生中の音に変化なし
5.Aを再起動後、Bでまた音を鳴らす⇒3と同じく、音が飛ぶ

『音が飛ぶ』とは音が途切れるのではなく、
再生位置が1秒弱先になる、という意味です。
また、必ずAの再生後のBの再生1回目に飛ぶことと、
毎回1秒弱先に飛ぶことから、
Aの音を再生するタイミングがズレているのではないかと
推測しています。

AがDirectSoundで音を鳴らそうとしているのに、
実際には1秒弱遅れて発音される。
で、Bが音を鳴らすと、Aのズレが戻り、
結果Aの音が1秒弱先に飛ぶ。
という現象だと思っているのですが、
解決方法がわかりません。

DirectX SDKのサンプル『StreamData』でも同様の現象が起こっていました。
これを回避する方法をどなたか知りませんでしょうか。

DOBON.NET | プログラミング道 | プログラミング掲示板