The purpose of this class is to make it easier and safer to create the plugin factory.
More...
|
template<typename RTProcessorClass , typename GUIControllerClass > |
static Steinberg::IPluginFactory * | GetNonDistributableVST3PluginFactory (const std::string &iVendor, const std::string &iURL, const std::string &iEmail, const std::string &iPluginName, const std::string &iPluginVersion, const std::string &iSubCategories, void *iContext=nullptr) |
| This flavor of this API lets you create a plugin that is not declared distributable. More...
|
|
template<typename RTProcessorClass , typename GUIControllerClass > |
static Steinberg::IPluginFactory * | GetVST3PluginFactory (const std::string &iVendor, const std::string &iURL, const std::string &iEmail, const std::string &iPluginName, const std::string &iPluginVersion, const std::string &iSubCategories, void *iContext=nullptr) |
| Main method to create the factory for the plugin. More...
|
|
The purpose of this class is to make it easier and safer to create the plugin factory.
The implementation provided with the VST3 SDK relies on macros, comments (like "do not changed this" or "not used here") and ends up creating static
instances which are never destroyed until the DAW quits (which is the normal behavior for static variables defined inside functions...) even if there are no more instances of the plugin (although it is not a big "leak", it is nonetheless one!).
You use this class in the following manner:
SMTG_EXPORT_SYMBOL Steinberg::IPluginFactory* PLUGIN_API GetPluginFactory()
{
pongasoft::test::jamba::RT::JambaTestPluginProcessor,
pongasoft::test::jamba::GUI::JambaTestPluginController
>("pongasoft",
"https://www.pongasoft.com",
"support@pongasoft.com",
stringPluginName,
FULL_VERSION_STR,
Vst::PlugType::kFx
);
}
- Note
- 1. The
GetPluginFactory()
method takes an additional (optional) parameter not shown in this example which is provided to the factory method of the controller and processor (iContext
) and can be used to provide additional information like a constructor argument for the parameters class or the parameters themselves or whatever else you want.
-
2. If you do not want to use this class, you can continue to use the macros provided with the SDK.