I’ve tried loading three or so different VST plugins, and each time I get ‘No compatible plug-in format exists for this plug-in’. I have VST2 and VST3 enabled in in the projucer. I’m not sure about all the plugins I tried, but at least two of them are definitely supposed to be 64-bit as opposed to 32-bit (my project is 64-bit, but I guess that goes without saying, I don’t think projucer gives a choice in that matter…).
I do have a directory defined for the VST2 and VST3 SDKs, I’m not sure if that could be a problem since for some reason the input field says “legacy” so I’m not sure if you’re expected to include the SDK directory in order to support VST3. But I do think the VST3 SDK I included is the latest version.
Edit: I just nullified the “legacy” VST SDK path and disabled JUCE_PLUGINHOST_VST and JUCE_CUSTOM_VST3_SDK (and left JUCE_PLUGINHOST_VST3 enabled), and I still get the error.
Here’s the relevant part of my code:
class Plugin
{
juce::AudioPluginFormatManager manager;
std::unique_ptr< AudioPluginInstance > instance;
public:
Plugin(string filepath, string formatname, int bitrate, int buffersize)
{
PluginDescription desc;
desc.fileOrIdentifier = filepath;
desc.pluginFormatName = formatname;
juce::String errmsg;
try
{
manager.addDefaultFormats();
instance = manager.createPluginInstance(desc, bitrate, buffersize, errmsg);
}
catch (...)
{
std::exception_ptr ex = std::current_exception();
py::print(what());
throw new py::import_error();
}
if (this->instance == nullptr)
{
py::print(errmsg.toStdString());
throw new py::import_error();
};
};
};
This is actually being implemented as a Python .pyd module using pybind11, but that shouldn’t be important. The parameters I’m passing are (r"D:\soundshop\vst\plugins\DSK_Saxophones_-_win64\DSK Saxophones - win64\DSK Saxophones.dll", “VST”, 44100, 512)
I don’t remember whether pluginFormatName is supposed to be “VST”, “VST3”, “vst”, or “vst3” for VST3, but I tried all of them, and besides, I don’t see why it asks for a pluginFormatName anyway because the docs seem to imply that juce auto-detects the plugin type when you load it.
Another plugin I tried loading (with the same error) is 'Sonatina Trumpet - 64.dll", and that one I know where I got it in case it’s important: Download Free Trumpet plugin: Sonatina Trumpet by bigcat Instruments
When I searched for 'No compatible plug-in format exists for this plug-in` online, the only solution I found was at Opening plugins , and I tried adapting the solution to my code as follows:
try
{
OwnedArray<PluginDescription> pluginDescriptions;
KnownPluginList plist;
manager.addDefaultFormats();
for (int i = 0; i < manager.getNumFormats(); ++i)
plist.scanAndAddFile(filepath,
true,
pluginDescriptions,
*manager.getFormat(i));
jassert(pluginDescriptions.size() > 0);
String errmsg;
instance = manager.createPluginInstance(*pluginDescriptions[0],
bitrate,
buffersize,
errmsg);
}
But I got an error that it couldn’t find 'D:/soundshop/vst/plugins/Sonatina Trumpet - 64.dll/manifest.ttl`, so I guess that solution is supposed to work for directories, not for individual file paths, and I don’t want to load by directory path.
Thanks for any help.