FogPad is a VST2/3/AU plug-in which provides a reverb effect in which the reflections can be frozen, filtered, pitch shifted and ultimately disintegrated.
VST3.0 is great and all, but support across DAW's is poor (shout out to Bitwig Studio for being awesome). You can however build this plugin as a VST2.4 plugin and enjoy it on a wider range of host platforms. Simply uncomment the following line in CMakeLists.txt:
set(SMTG_CREATE_VST2_VERSION "Use VST2" ON)
And rename the plugin extension from .vst3 to .vst.
Note: at the moment of writing there is an issue in SDK 3.6.9 where the VST2 plugin wrapper isn't working correctly on macOS. To correct this, add the following line to "VST3_SDK/public.sdk/source/main/macexport.exp" :
_VSTPluginMain
Depending on your host software having 32-bit or 64-bit support, you can best compile for a wider range of architectures, to do so replace all invocations of cmake in this README with the following:
cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" ..
Note: while i386 is considered deprecated in macOS, though you'd be surprised to find out how many people are running a 32-bit version of a DAW in this day and age...
cmake.exe -G"Visual Studio 15 2017 Win64" ..
cmake.exe -G"Visual Studio 15 2017 Win32" ..
The project uses CMake to generate the build system after which you can use make to build the application.
Apart from requiring CMake and a g++ compiler, the only other dependency is the VST SDK from Steinberg.
The project has been developed against the VST3 SDK version 3.6.9 on macOS and Windows 10 and should work completely via CLI without requiring either Xcode or Visual Studio (for both command line/build tools suffice). Linux build system is provided, but is as yet untested.
Additionally, the Steinberg VST sources need to be built as well. Following Steinbergs guidelines, the target is a /build-subfolder of the /VST3_SDK-folder, execute the following commands from the Steinberg VST SDK root:
./copy_vst2_to_vst3_sdk.sh
cd VST3_SDK
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
The result being that in {VST3_SDK_ROOT}/VST3_SDK/build/lib all Steinberg VST libraries are prebuilt. Windows users need to append --config Release to the last cmake (build) call.
Run CMake to generate FogPad's Makefile for your environment, after which you can compile the plugin using make. The build output will be stored in ./build/VST3/fogpad.vst as well as copied to your systems VST-plugin folder.
You must provide the path to your custom SDK download location by providing VST3_SDK_ROOT to CMake like so:
cmake -DVST3_SDK_ROOT=/path/to/VST_SDK/VST3_SDK/ ..
mkdir build
cd build
cmake -DVST3_SDK_ROOT=/path/to/VST_SDK/VST3_SDK/ ..
make .
Assuming the Visual Studio Build Tools have been installed:
mkdir build
cd build
cmake.exe -G"Visual Studio 15 2017 Win64" -DVST3_SDK_ROOT=/path/to/VST_SDK/VST3_SDK/ ..
cmake.exe --build .
You can copy the build output into your system VST(3) folder and run it directly in a VST host / DAW of your choice.
When debugging, you can also choose to run the plugin against Steinbergs validator and editor host utilities:
{VST3_SDK_ROOT}/build/bin/validator build/VST3/fogpad.vst3
{VST3_SDK_ROOT}/build/bin/editorhost build/VST3/fogpad.vst3
Is aided by the excellent Jamba framework by Pongasoft, which provides a toolchain around Steinbergs SDK. Execute the following instructions to build the plugin as an Audio Unit:
- Build the AUWrapper Project in the Steinberg SDK folder
- Create a Release build of the Xcode project generated in step 1, this creates VST3_SDK/public.sdk/source/vst/auwrapper/build/lib/Release/libauwrapper.a
- Run sh build_au.sh from the repository root, providing the path to VST3_SDK_ROOT as before:
VST3_SDK_ROOT=/path/to/VST_SDK/VST3_SDK sh build_au.sh
The subsequent Audio Unit component will be located in ./build/VST3/fogpad.component as well as linked in ~/Library/Audio/Plug-Ins/Components/
You can validate the Audio Unit using Apple's auval utility, by running auval -v aufx dely IGOR on the command line. Note that there is the curious behaviour that you might need to reboot before the plugin shows up, though you can force a flush of the Audio Unit cache at runtime by running killall -9 AudioComponentRegistrar.