4 ms·
> "it does generate something compatible with VST2.x and I've been working on VST3 this week-end (and pulling a few hairs, that API is horrendous, the smallest
by gavinray 5y ago
> "it does generate something compatible with VST2.x and I've been working on VST3 this week-end (and pulling a few hairs, that API is horrendous, the smallest example is a few thousand lines of codes)."
Oh that is awesome!!!
If you want a tip about the smallest possible VST3 implementation, (and maybe you already know this) there is a class called "SingleComponentEffect", and an example called "AGainSimple" that uses it and is a fully self-contained single file full VST3 plugin:
https://github.com/steinbergmedia/vst3_public_sdk/search?q=singlecomponenteffect https://github.com/steinbergmedia/vst3_public_sdk/search?q=s...
Also, I spent some time trying to get VST3 SDK usable with vcpkg so you could just do:
// vcpkg.json
{
"name": "my-audio-lib",
"dependencies": [
{
"name": "vst3sdk",
"version>=": "3.7.3"
}
]
}
And your CMake would just install it for you:
https://github.com/microsoft/vcpkg/issues/5660#issuecomment-922508478 https://github.com/microsoft/vcpkg/issues/5660#issuecomment-...
It ended up requiring more changes than this, but in the end I wound up fixing the CMake build so it spit out both the VST3 SDK (helper classes) shared lib and the almost-header-only lib ("pluginterfaces" directory).
I ought to upload the patches somewhere in case it's useful for you/anyone else.
> "yes, that's a goal, make your DSP processor in C++ and then write a small UI for it in python or QML without having to write binding code."
That would be incredible! I think the industry focus on doing UI in C++ is a bit nutty, as an outsider (but what do I know).
> "- asm("...") only wants string literals, strings generated through constexpr don't cut it (otherwise it'd be possible and even relatively easy to generate e.g."
Waaay over my head!!
- gavinray 5y agoAlright, I tried to push my fixed version of the VST3 SDK to Github but because it uses a ton of Git Submodules it didn't quite work. What I did instead was do: git diff > vst3sdk-no-vstgui-cmake-compatible.patch Which has a patch with the changes (EXCEPT for the file "Config.cmake.in") https://github.com/GavinRay97/vst3sdk/blob/master/vst3sdk-no-vstgui-cmake-compatible.patch https://github.com/GavinRay97/vst3sdk/blob/master/vst3sdk-no... I also just said fuck it and zipped up the whole project, you can download it here: https://github.com/GavinRay97/vst3sdk/blob/master/vst3sdk.zip https://github.com/GavinRay97/vst3sdk/blob/master/vst3sdk.zi... With this fixed version, using the VST3 SDK becomes much much easier. All you have to do is add it as a vendored subproject in CMake: project(VST3Example CXX) add_subdirectory(vendor/vst3sdk) add_executable(VST3Example src/main.cpp) target_compile_features(VST3Example PRIVATE cxx_std_20) target_include_directories(VST3Example PRIVATE vendor/vst3sdk) # This links SDK if you want to use the "SingleComponentEffect" target_link_libraries(VST3Example PUBLIC sdk) Where the project looks something like $ tree -L 2 . ├── CMakeLists.txt ├── src │ └── main.cpp └── vendor └── vst3sdk And then here's your VST3 in "main.cpp": #include "public.sdk/source/main/pluginfactory.h" #include "public.sdk/source/vst/vstsinglecomponenteffect.h" using namespace Steinberg; using namespace Steinberg::Vst; class MyVST : Steinberg::Vst::SingleComponentEffect {}; __declspec(dllexport) IPluginFactory* GetPluginFactory() {} Hope this helps! I am relatively clueless about C++ though!