PulpDrums
Category : validation
Type : MIDI Effect
Path : examples/PulpDrums/
Summary
A generative drum sequencer that outputs MIDI note events. The first Pulp example that produces MIDI output. Validates MIDI effect processing, pattern sequencing, and the produces_midi capability. Currently built only as a CLAP plugin.
What It Demonstrates
MIDI output: generating note-on events and writing them to midi_out
The produces_midi = true descriptor flag
16-step drum pattern sequencing with four tracks (kick, snare, hi-hat, clap)
GM drum map note numbers (channel 10)
Four built-in patterns: basic 4/4, breakbeat, sparse, and dense
Swing timing (offset applied to even steps)
Density-based pattern modulation (probabilistic step skipping and addition)
Velocity randomization
Audio pass-through while generating MIDI (acts as a MIDI insert effect)
Simple PRNG for deterministic randomization
Format
Supported
VST3
No
AU v2
No
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_drums.hpp
Processor with 16-step sequencer, pattern storage, and MIDI output generation
clap_entry.cpp
CLAP format entry point
test_pulp_drums.cpp
Unit tests for pattern generation and MIDI output
CMakeLists.txt
Build configuration using pulp_add_plugin()
Parameters
ID
Name
Unit
Range
Default
200
Tempo
BPM
60 to 240
120
201
Swing
(amount)
0 to 1
0
202
Density
(amount)
0 to 1
0.5
203
Velocity
(value)
1 to 127
100
204
Pattern
(stepped)
0 to 3
0
205
Randomize
(amount)
0 to 1
0
Known Limitations
CLAP only. MIDI effect support in VST3 and AU adapters is not yet validated for output.
Uses its own internal tempo clock rather than reading host transport tempo.
Note-off events are not generated; relies on the receiving instrument to handle one-shot drum samples.
The PRNG is deterministic but not reset between prepare calls, so randomization state carries across sessions.
PulpTone -- MIDI input (note-on/off consumption) rather than MIDI output
PulpSynth -- another CLAP-only example, focused on synthesis