2015年7月30日木曜日

Windows:vstgui:プリセット地獄

しばらくVST開発から遠ざかっていて、でも自作のVSTを使いたいので使っていたら、
どうも思った感じの挙動になっていない。

CUBASEでセーブすると、パラメータがごちゃごちゃと動き、エディットしたパラメータ
が全部リセットされて、プリセットに戻ってしまう。何だこれ!!

プリセットはFM音源部分だけに影響するようにしているので、FM音源部分だけが
プリセットに戻る。

こ、これは使えない・・

毎回プリセットに音色データを入れてビルドしないと使えないやんけ!

色々とデバッグして調べてみると、今の実力では標準のプリセットを使うとその現象
から逃れられないというのがわかってきた。

世の中の他のVSTはちゃんと動いているので、何か決定的な勘違いか知らない仕様
があると思われるけど、どうやって調べてもそこがわからなかった。ハマった。

■調べたコト
・getParameterとsetProgramの関係
→CUBASEでは、セーブする時に、
1.現在のプリセット番号を退避
2.エディットしたパラメータを取得して退避
としてくれるはず。

そうすると、ロード時に、
1.退避したプリセットを反映
2.エディットしたパタメータを反映
でいい感じになるのでは?

でも、現在の挙動としては、FM音源部分のみパラメータがごちゃっと動く。
つまり、退避だけしてくれればいいハズなのに、なぜか反映もしている。

・セーブ時にパラメータがごちゃごちゃと動く理由もわからない。
→試しに、setProgramでプリセットパラメータを反映しないようにしたらゴチャっと
動かなくなった。
→また、getParameterを通らなくしても同じようにゴチャっと動かなくなる。

ということは、CUBASEのセーブ時に知らない何かが起きているのではないか。

■回避方法
・標準のプリセットを使わないで、独自のプリセット管理システムを作る
→セーブ時には現在のパラメータのみがセーブされるので問題ない
→ただし、独自のプリセットシステムは敷居が高い!!

■独自方式の問題点
・ボタンを用意して、ポチポチ押したら次の音色、というのはすぐに作れそう。
・音色名を押すとドンと音色リストが開いて、音色名を押すとその音に変わる
というsynth1みたいなやり方がスタンダードだけど、これはものすごく大変!!
→未だに文字や画像を出すのがよくわからないから。

まずはボタンで次の音色ってヤツかな・・。

0 件のコメント:

コメントを投稿