DirectSoundドライバの再構築を行っています。
Psycleでは、DirectSoundのストリーミングバッファを使用してレンダリングした音を書き込んでいます。
書き込みタイミングは、タイミング管理用スレッド(PollerThread)でコントロールしています。間隔は10msです。
再構築上気になっているのは、
・タイミング管理用スレッド終了通知させるのに別にイベントオブジェクトを用意しているところ
スレッドハンドルを引数にWaitForSingleObjectすればいいのでは?
・Sleep(10)でタイミングをコントロールしているところ
Sleep(10)はあんまり正確でないのはしょうがないんですが、レンダリングデータをバッファに書き込む部分(DoBlocksメソッド)が、その不正確性を考慮して作られているかどうか?
あと、10ms固定でいいのか?これで低レイテンシ(数ms)のサウンドカードに対応できるのか?
・24bitサンプリング、32bitサンプリングの取り扱いはどうする?DirectSoundでそもそも取り扱えるのか?
です。
その辺を見直してから、次にASIOドライバのラッパクラスの再構築に取り掛かろうと思います。