DirectSoundとRubyのプログラミング その2

なんとなく続き。気が向いたので書いてみた。

再生カーソルと書き込みカーソル

DirectSoundでポーリングないしイベント受信でバッファを書き換えようとした場合、まずバッファ内でDirectSoundが使おうとしている領域をチェックしなければならない。と言うのは、CPUと同時にサウンドハードウェアがそこにアクセスしているからで、実際リアルタイムに参照しているのだが、1バイト単位で見ているわけではなくて、ある程度の塊単位でバッファをロック→再生ということを繰り返している。従って、CPUのアクセスとサウンドハードウェアのアクセスが衝突しないように、こっちが気をつけてあげる必要がある。

続きを読む