PulpSynth
Category : validation
Type : Instrument
Path : examples/PulpSynth/
Summary
A macro oscillator synthesizer with filter, full ADSR envelope, oscillator detune, and master gain. This is the most complex example and validates integration with the pulp::signal DSP library. Currently built only as a CLAP plugin.
What It Demonstrates
Integration with pulp::signal DSP processors: Oscillator (polyBLEP), Svf (TPT state-variable filter), Adsr, SmoothedValue, Gain
Dual-oscillator voice architecture with detuning for timbral richness
Filter envelope modulation (cutoff modulated by ADSR level)
Full ADSR envelope (attack, decay, sustain, release) rather than simple attack/release
Parameter smoothing via SmoothedValue for gain and cutoff
10 parameters covering oscillator, filter, envelope, and output sections
8-voice polyphony with voice stealing
Format
Supported
VST3
No (planned)
AU v2
No (planned)
CLAP
Yes
Standalone
No
Platform
Supported
macOS
Yes
Windows
Build stubs present, not yet validated
Linux
Build stubs present, not yet validated
Key Files
File
Purpose
pulp_synth.hpp
Processor using signal library DSP: Oscillator, Svf, Adsr, SmoothedValue
clap_entry.cpp
CLAP format entry point
test_pulp_synth.cpp
Unit tests for synthesis and signal library integration
CMakeLists.txt
Build configuration; links pulp::signal in addition to pulp::format
Parameters
ID
Name
Unit
Range
Default
100
Waveform
(stepped)
0 to 3
1 (saw)
101
Detune
ct (cents)
-100 to 100
0
102
Cutoff
Hz
20 to 20000
5000
103
Resonance
(Q)
0.1 to 10
0.707
104
Filter Env
(amount)
0 to 1
0.5
105
Attack
s
0.001 to 2
0.01
106
Decay
s
0.001 to 2
0.1
107
Sustain
(level)
0 to 1
0.7
108
Release
s
0.001 to 5
0.3
109
Gain
dB
-60 to 12
-6
Known Limitations
CLAP build fails with a missing pulp/signal/oscillator.hpp include path. This is a known issue tracked in CLAUDE.md. Exclude from test runs with ctest -E PulpSynth.
Only CLAP format is configured. The CMakeLists.txt notes VST3 and AU will be added when validated.
No standalone target.
PulpTone -- simpler synth without the signal library, implements oscillators inline
PulpDrums -- another CLAP-only example, focused on MIDI output