DirectSoundでサウンド再生開始時にノイズがのる件

何を思ったか、突然DirectSoundを触ってみた。

とは言っても、今までまともにサウンド再生なんてやったこと無かったので、
一先ず簡単そうなオンメモリなWAVを再生する所から始めてみたんだけど、表題の件で躓いた。

まずDirectSoundのサウンド再生システムは、まとめるとこんな感じになっているらしい。
DirectSoundには「プライマリバッファ」と「セカンダリバッファ」という2種類のサウンドバッファがあり、
「プライマリバッファ」はDirectSoundCreate8関数(多分)を実行した時に1個だけ自動的に作成されるもので、
セカンダリバッファ」はプログラマが何個でも作れる(というかサウンドの数だけ作ることになる)。
そして、あるセカンダリバッファの再生を指定すると、プライマリバッファにおいて
「再生中の他のセカンダリバッファたち」とミキシングされ、サウンドが出力されるという寸法。

で、表題の件が起こるのは、この「再生中の他のセカンダリバッファたち」が0個から1個になるとき。
つまり何か1個のサウンドを再生やら停止やらしていると、再生開始直後にプチノイズがのる。
プライマリバッファで何が起こってるのかは知らないけど、どうもそれまで再生していたサウンドが残っている感じ。

そこで、なんやかんや調べていたら、
「常にプライマリバッファの内容を更新し続けるために、無音のループサウンドを垂れ流しにする」
という方法に行き当たり、これがビンゴ。

結局他に同じような記事(というかこの現象に遭遇しているという記事自体)は見つからなかったんだけど、
もしかして結構常套手段だったりするのかな。。。

というか今からやるならXAudio2なのか。