Repository navigation
Building from Source
- Windows 10/11 x64 with Visual Studio 2022 or 2026 and the Desktop development with C++ workload (includes MSVC and CMake), or
- macOS 11 or newer with the Xcode command line tools, CMake 3.25+ and Ninja (so far only built on GitHub Actions)
- Git
JUCE 8.0.15 and Catch2 are fetched automatically by CMake on the first configure.
git clone https://github.com/atze187/dubgefahren.git
cd dubgefahren
powershell -NoProfile -ExecutionPolicy Bypass -File build.ps1 all| Command | What it does |
|---|---|
configure |
CMake configure (Visual Studio generator, x64) |
build |
Build (configures first if needed) |
test |
Build and run all tests (CTest) |
install |
Build and copy the plugin to %CommonProgramFiles%\VST3 — run in an administrator PowerShell; never overwrites an existing config |
validate |
Build Steinberg's VST3 validator and run it on the plugin, then pluginval (strictness 5) if tools\bin\pluginval.exe exists |
all |
configure + build + test |
Option: -Config Debug|Release (default Release).
Output: build\plugin\Dubgefahren_artefacts\Release\VST3\Dubgefahren.vst3.
build.ps1 is a thin wrapper around the CMake presets in CMakePresets.json, which you can also call directly
(this is how the macOS build works):
| Preset | Platform |
|---|---|
windows-x64 (build/test: windows-release, windows-debug) |
Windows x64, Visual Studio |
macos-universal (build/test: macos-release) |
macOS, Ninja, arm64;x86_64, deployment target 11.0, build folder build-macos/
|
cmake --preset macos-universal
cmake --build --preset macos-release --parallel
ctest --preset macos-releaseFor pluginval, download pluginval_Windows.zip from
Tracktion/pluginval releases and put pluginval.exe
in tools\bin\ (ignored by git).
| Folder | Contents |
|---|---|
engine/ |
The DSP engine in plain C++20, no JUCE: oscillator, LFO, envelope, siren voice, sample player, pad router (trigger modes, choke, focus), filter, saturator, tape delay, phaser, spring reverb, FX chain, factory kit, engine |
plugin/ |
JUCE wrapper: parameters, processor, state, kit files, config, UI (plugin/ui/) |
tests/ |
Catch2 tests for the engine and the plugin, plus an install test |
cmake/ |
Install and post-build helper scripts |
tools/vst3validator/ |
Separate CMake project that builds Steinberg's validator |
docs/superpowers/ |
Design spec and implementation plan |
The engine is independent of JUCE and fully unit-tested; slots talk to their sound source (siren or sample) through a
SoundSource interface, so the router and the FX chain do not care which one is playing.
Pushing a tag v* runs .github/workflows/release.yml. The jobs windows and macos run in parallel on
GitHub-hosted runners; each does build, tests, Steinberg validator and pluginval, then uploads its zip
(Dubgefahren-<tag>-win64.zip, Dubgefahren-<tag>-macos.zip; the macOS bundle is ad-hoc signed and checked with
codesign --verify). The job publish attaches the zips of all successful jobs to the GitHub release, so a failing
macOS job does not block the Windows release. The workflow can also be started manually from the Actions tab; the
zips are then available as build artifacts without a release.
AGPLv3 — see LICENSE. Contributions are welcome under the same license.