Ich habe vor kurzem begonnen, jvstwrapper und auch das juce-Framework zu verwenden. Es scheint, dass das VST SDK einige Konzepte verschiedener "Programme" für Ihr Instrument hat. Zum Beispiel haben sowohl jvstwrapper als auch juce Klassen, von denen Sie erben, um Ihr Instrument zu erstellen. Diese Klassen erfordern eine Anzahl von zu implementierenden Methoden. In beiden Fällen (und ausführlich im VST SDK) müssen Sie die Methoden "setProgram", "getProgramName", "setProgramName", "getNumPrograms" usw. implementieren. Ich weiß, dass jedes Programm eine Reihe von Einstellungen für das Instrument enthält. Aber in welchen Fällen werden sie tatsächlich verwendet? Plus wieviele sollen da sein?Was sind "Programme" in einem VST-Instrument?
Antwort
Ein VST-Programm ähnelt einem Hardware-ROM-Preset oder einer MIDI-Programmwechsel-Meldung. Die Hardware-Analogie macht mehr Sinn, wenn Sie mit älteren Synthesizern vertraut sind, die oft Factory-Presets lieferten, die "angewählt" und dann entsprechend angepasst werden konnten. Einige Hosts zeigen die Liste der Programme als Dropdown-Menü an, damit Benutzer schnell die werkseitigen Voreinstellungen durchsuchen können.
In Bezug auf die Anzahl der möglichen Programme, die ein Plugin haben kann, verwendet das VST SDK VstInt32
(eine 32-Bit-Ganzzahl) für den Programmindex. So könnte ein Plugin theoretisch bis zu 2147483647 mögliche Programme haben. In der Praxis beschränken die meisten Hosts dies auf 127 (um mit MIDI-Programmwechsel-Nachrichten kompatibel zu sein), so dass es unklug ist, mehr als 127 Programme verfügbar zu machen, sonst könnte der Host Probleme mit Ihrem Plugin haben.
IMHO das Konzept der VST-Programme ist ein bisschen veraltet und veraltet. Es ist viel sinnvoller, wenn Ihr Plugin die FXP/FXB-Funktionen des VST SDK unterstützt, damit der Benutzer Patches von/auf die Festplatte importieren/exportieren kann. Wie Sie vielleicht erwarten, hat Juce natürlich hooks for loading and saving VST preset files.
Viele moderne Plugins unterstützen keine VST-Programme und es ist völlig akzeptabel, dass Ihr Plugin 0
im getNumPrograms()
-Aufruf zurückgibt.
Super Antwort danke. Ich vermutete, dass es sich um Presets handelte, aber ich dachte "Programm" war eine seltsame Wortwahl! Hoffentlich kann jemand, der so verwirrt ist wie ich, davon profitieren. – Jonathan