S.F.Tracker(9)

公開:2005-03-24 22:10
更新:2020-02-15 04:36
カテゴリ:sftracker,windows,audio,tracker

今日はPyscleソースとにらめっこです。わかったことといえば...。
MMEやDirectSoundを使用した場合の動きです。
1.Driverを初期化
2.ポーリングスレッド(PollerThread)のスタート
3.ポーリングスレッドが、10ms-20msおきにDoBlocks()を呼び出す。
4.DoBlocks()はあるサンプル数分のWaveデータを作成し、出力する。出力するデータの作成はPlayer::Work()を呼び出すことで行う。DoBlocks()が終わったら3.に戻る
5.Player::Work()はシーケンスのコントロール、MIDIイベントの処理(InjectMIDI)、Machine::Work()を呼び出してドライバに出力するWaveデータの作成を行う。

気になるのは、
・MIDI入力の処理
これは別スレッドでMIDIイベントをキューにため込んでPlayer::Work()中で処理してるのかな?とか思いながらMIDIのソースを見始めているところです。
・ポーリングスレッドの間隔
10ms-20msは妥当なのか?PsycleでMIDIキーボードを使用し、リアルタイムレコーディングをするとちょっとモタるのはこのせい?もしくはレイテンシのせい?