I am able to compile the examples of the VST SDK 3.7 on Windows. However all plugins that use VSTGUI just show a black box instead of the interface. This did not happen with SDK v3.6.9.
I am using Visual Studio 2019.
It seems to be a problem with cmake. The .png files are not added to the .sln file or the .rc file is missing
Used software: Visual Studio 2019, Cmake 3.19.0 / Cmake 3.17.2. PC.
Here is plug.rc from the VST SDK 3.7 of the HelloWorldWithVSTGUI example. The reference to the .png files and to plug.uidesc is missing.
#include <windows.h>
#include “…/include/version.h”#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Version
/////////////////////////////////////////////////////////////////////////////
VS_VERSION_INFO VERSIONINFO
FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT
PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK “StringFileInfo”
BEGIN
BLOCK “040004e4”
BEGIN
VALUE “FileVersion”, FULL_VERSION_STR"\0"
VALUE “ProductVersion”, FULL_VERSION_STR"\0"
VALUE “OriginalFilename”, stringOriginalFilename"\0"
VALUE “FileDescription”, stringFileDescription"\0"
VALUE “InternalName”, stringFileDescription"\0"
VALUE “ProductName”, stringFileDescription"\0"
VALUE “CompanyName”, stringCompanyName"\0"
VALUE “LegalCopyright”, stringLegalCopyright"\0"
VALUE “LegalTrademarks”, stringLegalTrademarks"\0"
//VALUE “PrivateBuild”, " \0"
//VALUE “SpecialBuild”, " \0"
//VALUE “Comments”, " \0"
END
END
BLOCK “VarFileInfo”
BEGIN
VALUE “Translation”, 0x400, 1252
END
END
The VST SDK 3.6.9 does create a proper plug.rc file:
#include <windows.h>
#include “…/include/version.h”#define APSTUDIO_READONLY_SYMBOLS
plug.uidesc DATA “plug.uidesc”
background.png PNG “background.png”
animation_knob.png PNG “animation_knob.png”
onoff_button.png PNG “onoff_button.png”background_2x.png PNG “background_2x.png”
/////////////////////////////////////////////////////////////////////////////
// Version
/////////////////////////////////////////////////////////////////////////////
VS_VERSION_INFO VERSIONINFO
FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT
PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK “StringFileInfo”
BEGIN
BLOCK “040004e4”
BEGIN
VALUE “FileVersion”, FULL_VERSION_STR"\0"
VALUE “ProductVersion”, FULL_VERSION_STR"\0"
VALUE “OriginalFilename”, stringOriginalFilename"\0"
VALUE “FileDescription”, stringFileDescription"\0"
VALUE “InternalName”, stringFileDescription"\0"
VALUE “ProductName”, stringFileDescription"\0"
VALUE “CompanyName”, stringCompanyName"\0"
VALUE “LegalCopyright”, stringLegalCopyright"\0"
VALUE “LegalTrademarks”, stringLegalTrademarks"\0"
//VALUE “PrivateBuild”, " \0"
//VALUE “SpecialBuild”, " \0"
//VALUE “Comments”, " \0"
END
END
BLOCK “VarFileInfo”
BEGIN
VALUE “Translation”, 0x400, 1252
END
END
After fixing the .rc files with a text-editor the examples show a GUI
You can use the resource (like you did) or you use the fact that VST3 plugins are now build as bundle (on windows like on mac), this is the default with cmake.
I understand that the bundles on PC can be an advantage for cross-platform development.
Please note this:
- building bundles on PC does not work with the VST2.4 wrapper.
- I can already see many users contacting our suppoprt with “the plugin crashes” because they deleted files from the .vst3 bundle. The users will definitely mess around with it (moving / deleting /editing files)
- I did run some tests with the bundles on various VST3 hosts on PC. Many of them can not handle it properly.
That’s why I do not think that bundles on PC are a good design-decision - at least not in the year 2020.
- yes VST2 does not support bundle, when you need to build VST2 plugins (Legacy) you have to adapt your postbuild.
- yes Windows does not support natively bundle like Apple does, that´s not a reason to not define/use such bundle (folder)
- why an end-user will or should delete some resources located in this folder ? this is the job of installer to manipulate such folder structure. If the user has the idea to move a plug-in, it is easier when all related files are packed into a folder (bundle)…
- which hosts do not support bundle on Windows? please give us more info, we will then contact them.
- VST 3 bundle is a good design, specifying and unifying cross-platform a way to organize resources (snapshot, additional resources (pdf, jpg,…), targetting different architectures,…)
Thx
By the way, Avid did the same with AAX.
I do not remember exactly which hosts and which version. It has been quite a while since i ran the tests.
I think it was a Reaper version from 2019 and an Ableton version from 2019 (all PC). After building without SMTG_CREATE_BUNDLE_FOR_WINDOWS it did work.
You have introduced the bundles on PC with SDK 3.6.10. Maybe the compatibility problem affects all VST3 hosts on PC released before this SDK.
This was the reason why i had moved to SDK 3.6.9, which still did not use SMTG_CREATE_BUNDLE_FOR_WINDOWS.