Skip to content

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. Its existing waveforms retain the legacy polyBLEP path, while waveform 4 explicitly opts into the fixed-capacity minBLEP saw. Currently built only as a CLAP plugin.

What It Demonstrates

  • Integration with pulp::signal DSP processors: Oscillator (polyBLEP), osc::MinBlepAccumulator plus osc::PhaseAccumulator (opt-in minBLEP saw), 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

Supported Formats

Format Supported
VST3 No (planned)
AU v2 No (planned)
CLAP Yes
Standalone No

Supported Platforms

Platform Supported
macOS Yes
Windows Build targets present; validation pending
Linux Build targets present; validation pending

Key Files

File Purpose
pulp_synth.hpp Processor using signal library DSP: Oscillator, Svf, Adsr, SmoothedValue
minblep_saw.hpp Opt-in saw voice composed entirely from the public phase and minBLEP primitives
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 4 1 (legacy saw); 4 selects minBLEP 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

  • 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