A free, open-source software synthesizer built with JUCE and C++20. Inspired by the Roland Juno-Di workflow β instant playability, rich sound, zero menu diving.
Open Synth is a standalone + VST3 synthesizer plugin designed for musicians who want to plug in and play. It combines a modern C++ DSP engine with a clean JUCE-based UI, delivering everything from classic analog-style leads to evolving wavetable pads β without forcing you through nested menus.
Originally prototyped in Flutter/Dart, the engine was rebuilt in native C++ for pro audio performance: sub-10ms latency, 16-part multitimbrality, and a full MFX (multi-effects) chain.
- Dual oscillators per part β sine, saw, square, triangle, pulse, noise, wavetable
- Wavetable synthesis with 100+ built-in tables and morphing
- Physical modeling mode for acoustic-style realism (body resonance, key click, sympathetic strings)
- Unison voices with detune and stereo spread
- FM synthesis on both oscillators
- Sub-oscillator with multiple octave modes
- Multi-mode filter: lowpass, highpass, bandpass, notch, comb
- 3 envelopes: amp (with delay/hold), filter (with key tracking), pitch
- Per-stage curve shaping (linear, exponential, logarithmic)
- 2 LFOs per part β tempo-syncable, fade-in, routable to pitch/filter/amp/pan
- Pitch bend, mod wheel, aftertouch, polyphonic aftertouch
- Arpeggiator with 8 patterns, octave range, swing, gate, and hold
4-slot series effects engine with 22 processor types:
| Legacy (Slot 0) | MFX Expansion (Slots 1-3) |
|---|---|
| Chorus | Equalizer |
| Delay | Limiter |
| Reverb | Rotary |
| Phaser | Tremolo |
| Flanger | Auto-Wah |
| Compressor | Bitcrusher |
| Drive | Ring Modulator |
| Pitch Shifter | |
| Multitap Delay | |
| Ping-Pong Delay | |
| Spring Reverb | |
| Gated Reverb | |
| Amp Simulator | |
| Stereo Widener | |
| Vocoder |
- 16-part multitimbral β full MIDI channel separation
- Voice allocation: polyphonic, monophonic, legato, unison modes
- Drum kit with 8 preset kits and rhythm pattern player
- User preset manager β save/load with categories
- Setlist mode β chain presets for live performance
- MIDI learn on all parameters
- Audio recording built-in
- CPU load meter and oscilloscope
βββββββββββββββββββββββββββββββββββββββββββ
β JUCE Plugin Editor β
β (Knobs, keyboard, scope, preset UI) β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β OpenSynthProcessor β
β (APVTS, MIDI routing, state mgmt) β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β SynthEngineWrapper β
β (JUCE audio buffer bridge) β
βββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββ
β SynthEngine β
β 16 parts β VoiceAllocator β FX Engine β
β Arpeggiator + DrumKit + Recorder β
βββββββββββββββββββββββββββββββββββββββββββ
- CMake 3.22+
- C++20 compiler (GCC 12+, Clang 15+, MSVC 2022+)
- JUCE β resolved in this order:
-DJUCE_DIR=/path/to/JUCE, theJUCE_DIRenvironment variable, alibs/JUCEsubmodule, or~/.juce
git clone --recurse-submodules https://github.com/synthalorian/open-synth.git
cd open-synth
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DJUCE_DIR=/path/to/JUCE
make -j$(nproc)Important: use --recurse-submodules (or git submodule update --init after cloning). The CC0 sample libraries (pianos, drums, bass, guitars) live in git submodules under samples/ β without them, sample-based presets will be silent.
The standalone binary, VST3, and CLAP plugins will be in build/OpenSynth_artefacts/.
cd build
./sample_load_test ../samples # all library WAVs decode (83/83)
./sample_player_block_test ../samples # block processing, pitch bend, ADSR
./sample_static_test ../samples/manifests/splendid-grand-piano.json # manifest load + clean audio
./fx_tests # 1,021 FX engine unit testsmkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release- Core synth engine (dual osc, filter, envelopes)
- Wavetable + physical modeling
- Full MFX chain (22 FX types)
- Arpeggiator + drum kit + rhythm patterns
- 16-part multitimbrality
- User presets + setlist mode
- App state persistence + MIDI input
- Preset library β 5,600 presets across 20+ categories
- Sample playback / ROMpler layer (CC0 library: pianos, drums, bass, guitars)
- CLAP plugin format
- In Progress: Instrument realism system (per-category body models)
- MPE (MIDI Polyphonic Expression) support
- iOS / Android standalone apps
MIT License β see LICENSE.
Bundled sample libraries are CC0 / public domain (see samples/ submodule sources: freepats, sfzinstruments).
Made by synth with synthclaw πΉπ¦ β built on the JUCE framework.
"This is the wave." πΉπ¦
