最近、jvstwrapper と juce フレームワークを使い始めました。VST SDK には、インストゥルメント用のさまざまな「プログラム」という概念があるようです。たとえば、jvstwrapper と juce の両方に、楽器を作成するために継承するクラスがあります。これらのクラスには、いくつかのメソッドを実装する必要があります。どちらの場合も (VST SDK で詳しく説明されています)、"setProgram"、"getProgramName"、"setProgramName"、"getNumPrograms" などのメソッドを実装する必要があります。しかし、それらは実際にどのような場合に使用されるのでしょうか? さらに、何人いるはずですか?
1 に答える
VST プログラムは、ハードウェア ROM プリセットまたは MIDI プログラム変更メッセージに似ています。古いシンセサイザーに精通している場合、ハードウェアの類推はより理にかなっています。古いシンセサイザーは、「ダイヤルアップ」してそれに応じて微調整できる工場出荷時のプリセットを出荷することがよくありました。一部のホストは、ユーザーが工場出荷時のプリセットをすばやく参照できるように、プログラムのリストをドロップダウン メニューとして表示します。
プラグインが持つことができるプログラムの数に関して、VST SDK はVstInt32
プログラム インデックスに (32 ビット整数) を使用します。したがって、プラグインは理論的には最大 2147483647 の可能なプログラムを持つことができます。実際には、ほとんどのホストはこれを 127 に制限しています (MIDI プログラム チェンジ メッセージとの互換性を保つため)。したがって、127 を超えるプログラムを公開することは賢明ではありません。
私見ですが、VST プログラムの概念は少し時代遅れで時代遅れです。プラグインが VST SDK の FXP/FXB 機能をサポートし、ユーザーがパッチをハードディスクとの間でインポート/エクスポートできるようにすることは、はるかに理にかなっています。ご想像のとおり、Juce にはもちろん、VST プリセット ファイルをロードおよび保存するためのフックがあります。
0
最新のプラグインの多くは VST プログラムをサポートしていないため、プラグインがgetNumPrograms()
呼び出しで返されることはまったく問題ありません。