S.F. Tracker (186)

公開:2006-05-15 19:46
更新:2020-02-15 04:36
カテゴリ:sftracker,c++,windows,audio,tracker

freeze機能は、ソフトシンセなどのmachineを事前レンダリングし、再生時にレンダリング時間を省くことによってCPU負荷率を下げる機能だ。
S.F.Trackerは今のところモジュラー部分でfreeze機能を実装しようとしている。
たとえば下記のようにmachine(VstPluginなどのラッパ)を接続している場合、Machine1でfreezeさせると、

Machine4 -- Machine3 -- Machine2 -- Machine1 --> Audio Out

あらかじめMachine1~Machine4のシーケンスデータを再生をしつつレンダリングを行い、バッファに保存しておく。
再生時はMachine1~Machine4のデータはプレ・レンダリングされたデータを再生するため、Machine1~Machine4にかかるレンダリング時間が再生時に省かれるため、CPU負荷が下がるわけだ。

freezeはできたら、バックグラウンドで処理を行ないたいと考えている。
そこで問題になるのが、sequencer部分の現在の実装だ。

sequencer部分は今のところ、

・データ保持
・編集
・再生(シーケンスを実際に実行し、再生位置を保持する)

が一緒になっている。
sequenceデータはfreeze用も音を鳴らすときも同じデータなので共用できるが、現在再生中のイテレータ等は当然ながら共用できない。
ので、データ保持・編集部分と再生部分を分離しようと思う。