PulpGain #
Category: reference Type: Effect Path: examples/pulp-gain/
Summary #
The simplest possible Pulp plugin. A stereo gain effect with input gain, output gain, and bypass parameters. This is the canonical example for learning how to build a Pulp plugin and is the recommended starting point for new developers.
What It Demonstrates #
- Subclassing
format::Processor with descriptor(), define_parameters(), prepare(), and process()
- Defining parameters with stable IDs, ranges, units, and step values
- Reading parameter values from
StateStore on the audio thread via state().get_value()
- Stereo audio pass-through and gain processing
- Bypass parameter handling
- Building the default plugin format targets plus optional AAX from a single processor
- Format-specific entry point files (
vst3_entry.cpp, au_v2_entry.cpp, clap_entry.cpp, aax_entry.cpp, main.cpp)
- Bundle metadata files (
Info.plist.au, Info.plist.vst3, moduleinfo.json)
- Format validation tests (auval, pluginval, CLAP dlopen, optional AAX validator)
Try in Browser #
The same Processor code that runs as VST3/AU/CLAP is compiled to WebAssembly and can run in the local browser host via the Web Audio API. The repo does not yet publish a canonical Pages-hosted browser host, so use tools/browser-host/ locally for now.
| Format |
Supported |
| VST3 |
Yes |
| AU v2 |
Yes |
| CLAP |
Yes |
| AAX |
Optional on macOS/Windows |
| Standalone |
Yes |
| WAMv2 (Browser) |
Yes |
| WebCLAP (WASM) |
Yes |
| Platform |
Supported |
| macOS |
Yes |
| Windows |
Build stubs present, not yet validated |
| Linux |
Build stubs present, not yet validated |
Key Files #
| File |
Purpose |
pulp_gain.hpp |
Processor implementation: descriptor, parameters, audio processing |
vst3_entry.cpp |
VST3 format entry point |
au_v2_entry.cpp |
Audio Unit v2 entry point |
au_register.cpp |
AU component registration |
clap_entry.cpp |
CLAP format entry point |
aax_entry.cpp |
AAX format entry point |
main.cpp |
Standalone application entry point |
test_pulp_gain.cpp |
Unit tests exercising the processor through the headless host |
Info.plist.au |
AU bundle metadata |
Info.plist.vst3 |
VST3 bundle metadata |
moduleinfo.json |
VST3 module info |
CMakeLists.txt |
Build configuration using pulp_add_plugin() |
Parameters #
| ID |
Name |
Unit |
Range |
Default |
| 1 |
Input Gain |
dB |
-60 to 24 |
0 |
| 2 |
Output Gain |
dB |
-60 to 24 |
0 |
| 3 |
Bypass |
(toggle) |
0 to 1 |
0 |
Known Limitations #
- No GUI. The processor is headless; UI is tested separately in the ui-preview example.
- dB-to-linear conversion is computed per-block, not per-sample smoothed. This may produce zipper noise during fast automation.
- PulpEffect -- adds more parameter types and biquad DSP
- PulpTone -- adds MIDI input and polyphonic voice handling
- UI Preview -- demonstrates the view/widget system using PulpGain-like parameters