ソングデータの再生をコントロールするplayerを作成し始めた。
演奏はメインスレッドと別のスレッドで行う。
処理の流れは以下のとおりだ。
1.演奏スレッドは、せっせと演奏データを、バッファがいっぱいになるまで生成する。
2.いっぱいになるまで生成したら、演奏スレッドは眠る。
3.それを後追いして、ドライバがバッファのデータを音源に渡す。
4.バッファの半分くらいまで音源にデータを渡したら、演奏スレッドをたたき起こす。
5.1に戻る
問題になるのが、リアルタイムメッセージをどのようにバッファに反映させるかである。たとえば、あるソフトシンセのVCFを演奏中にいじった場合、そのいじり具合をリアルタイムに演奏データに反映させないといけない。しかし、実時間よりかなり先行して演奏データを生成しているので、かなり遅れて演奏データに反映されることになってしまう。
なので、ここはひと工夫必要なのである。