S.F.Tracker(43)

公開:2005-06-03 19:01
更新:2020-02-15 04:36
カテゴリ:sftracker,windows,audio,tracker

音を鳴らすための作業を進めている。

オーディオインターフェイスとプレイヤーはコントローラクラスのメンバーにする。コントローラのクラスはシングルトンとなっていて、どこからでも参照可能とする。
ドライバとプレイヤーを繋ぐバッファ部分はコントローラのメンバーとし、パブリックで公開する。

バッファは昨日書いた通りリングバッファとする。
リングバッファはfloatで16キロバイト(4096個)の大きさで、読みだし用と書きこみ用のポインタを持つ。
リングバッファはインターフェイスが持つ出力ポートの数に応じて複数用意する。
再生時はまずドライバのスレッドを起動し、その後Waveデータをオープンし、リングバッファに書き込む。ドライバスレッドは、リングバッファデータをバッファのフォーマットに変換しつつコピーする。

ASIOの場合、カーネルミキサを通さないので自前でサンプリングレートやフォーマット変換を行わなくてはならない。そこが面倒なところだ。
しかし余分なミキシング機能やサンプリングレートコンバータをバイパスする分音質が良くなると言われている(ここのBBS参照。実情はもっと複雑だったりする)。
カーネルミキサを超えるサンプリングレートコンバータやミキサを作れればの話だが・・