ようやく動作するようになった。
DirectSoundのストリーミング再生にはクセがあることがわかった。
サウンドバッファに小さいサイズを指定するとノイズが入るのだ。
私の環境では、2048バイト以下(16bitステレオ、44100Hzで11msec)でノイズが入った。
DirectSoundではレイテンシは50ms以下を保障しているから、これは優秀か?
でも50msというのは内部処理も含めたレイテンシだから、上記の数字は妥当なところだろうか?
ヘルプを見ると、ストリーミングバッファに関して、注意事項が記載されていた。
(DirectX9 SDK 日本語ヘルプより)
ストリーミング バッファを使うときは、通知とデータ書き込みの頻度を制限する必要がある。通知位置の多いバッファを作成したり、非常に短い間隔で通知を行う小さいバッファを作成したりしてはならない。ストリーミング バッファには、1 ないし 2 秒のデータを格納し、2 つの通知位置だけが設定できる。
うーん。。。。