A polyphonic subtractive synth plugin built with JUCE. Two oscillators, per-voice unison, a resonant low-pass filter with a dedicated cutoff envelope, and amp/filter ADSRs. Builds as VST3, AU, and a Standalone app.
- 2 oscillators — Saw / Square / Triangle / Sine, each with octave, semitone, fine tune (cents), and level.
- Unison — 1–7 voices per oscillator with detune spread and stereo width.
- Filter — resonant low-pass (state-variable TPT) with drive.
- Cutoff envelope — a dedicated ADSR modulating the filter cutoff (±octaves).
- Amp envelope — ADSR VCA.
- 8-voice polyphony, master gain, full state save/load (preset-ready via the host).
- Custom rotary-knob GUI with an on-screen keyboard.
Requires CMake ≥ 3.22 and a C++17 compiler. JUCE is fetched automatically at configure time — no manual install needed.
git clone https://github.com/tpklo/synth-plugin.git
cd synth-plugin
cmake -B build
cmake --build build -j4First configure downloads JUCE (a few minutes, one-time).
Artifacts land in build/DuoSynth_artefacts/:
Standalone/DuoSynth.app— run directly, no DAW neededVST3/DuoSynth.vst3AU/DuoSynth.component(macOS)
Install the VST3 (macOS):
cp -R build/DuoSynth_artefacts/VST3/DuoSynth.vst3 ~/Library/Audio/Plug-Ins/VST3/open build/DuoSynth_artefacts/Standalone/DuoSynth.app # macOSClick the on-screen keys, or play your computer keyboard (A S D F… = white
keys). For the classic filter "wah": lower Cutoff, raise Env Amt, shorten
F.Dec. For a thick supersaw: raise Voices + Detune.
cmake --build build --target DuoSynthTest
./build/DuoSynthTest_artefacts/DuoSynthTestOffline render checks: audible output, envelope release, cutoff-envelope brightness modulation, unison stereo spread, master gain, state round-trip.
If a C++ build fails with 'algorithm' file not found, your Command Line Tools
libc++ headers are incomplete. Either reinstall them
(sudo rm -rf /Library/Developer/CommandLineTools && xcode-select --install) or,
as a quick workaround, build with:
export CPLUS_INCLUDE_PATH=$(xcrun --show-sdk-path)/usr/include/c++/v1Personal project — use freely.
