See https://vcvrack.com/manual/Building
export RACK_DIR=~/Rack-SDK
make installIf you need to test a .vcvplugin artifact from GitHub Actions/Release (rather than building locally), the file is zstd-compressed and needs to be manually extracted:
brew install zstd # if not already installed
zstd -d ~/Downloads/BerserkAudio-2.0.0-mac-arm64.vcvplugin -o ~/Downloads/BerserkAudio-2.0.0-mac-arm64.tar
tar -xf ~/Downloads/BerserkAudio-2.0.0-mac-arm64.tar -C '/Users/nicolasmurphy/Library/Application Support/Rack2/plugins-mac-arm64/'Then restart Rack. The plugins directory may differ by platform and architecture.
Note: The paths below assume a
~/projects/layout (e.g.~/projects/BerserkAudio,~/projects/metamodule-plugin-sdk). Adjust to match your machine.
-
ARM GCC Toolchain v12.2 or v12.3 (must be this version — newer won't work)
Download
arm-gnu-toolchain-12.3.rel1-darwin-arm64-arm-none-eabi.tar.xzfrom the Arm Developer site and extract it:mkdir -p ~/toolchains tar -xf ~/Downloads/arm-gnu-toolchain-12.3.rel1-darwin-arm64-arm-none-eabi.tar.xz -C ~/toolchains
-
CMake (v3.22+) and Ninja
brew install cmake ninja
-
MetaModule Plugin SDK
git clone https://github.com/4ms/metamodule-plugin-sdk --recursive ~/projects/metamodule-plugin-sdk
This generates the mm-build/ directory. You only need to re-run this when CMakeLists.txt changes.
cd ~/projects/BerserkAudio
cmake --fresh -B mm-build -G Ninja \
-DMETAMODULE_SDK_DIR=$HOME/projects/metamodule-plugin-sdk \
-DTOOLCHAIN_BASE_DIR=$HOME/toolchains/arm-gnu-toolchain-12.3.rel1-darwin-arm64-arm-none-eabi/bincmake --build mm-buildThe output file lands in metamodule-plugins/BerserkAudio.mmplugin.
Rename it to include the version when testing:
mv metamodule-plugins/BerserkAudio.mmplugin metamodule-plugins/BerserkAudio-v2.0.0.mmpluginTo release a new version (both VCV Rack and MetaModule):
./release.sh 2.1.0This will:
- Update the version in
plugin.jsonandCMakeLists.txt - Commit the change
- Push a
v2.1.0tag, which triggers the build workflow - The workflow builds VCV Rack plugins for win-x64, lin-x64, mac-x64, mac-arm64, builds the MetaModule plugin, and creates a single GitHub release with all artifacts attached
Requires jq to be installed (brew install jq).
The MetaModule cannot render SVGs. The panel PNGs in assets/ were generated from the panel SVGs in res/ using the SDK's conversion script:
export INKSCAPE_BIN_PATH=/Applications/Inkscape.app/Contents/MacOS/inkscape
cd ~/projects/metamodule-plugin-sdk
python3 scripts/SvgToPng.py --input ~/projects/BerserkAudio/res --output ~/projects/BerserkAudio/assets --height=240Re-run this if you change any panel SVG. The PNGs must be 240 pixels tall.