Overview
ThePluginProcessor class is the heart of plugdata. It inherits from both JUCE’s AudioProcessor and plugdata’s pd::Instance, combining DAW plugin functionality with Pure Data patch management and DSP processing.
Location: Source/PluginProcessor.h
Class Hierarchy
AudioProcessor- JUCE’s audio plugin base classpd::Instance- Pure Data instance wrapperSettingsFileListener- Settings file change notifications
Key Methods
Audio Processing
void
- Sample rate configuration
- Buffer sizes
- DSP preparation
- Internal synthesis setup
void
- Audio input/output routing
- MIDI message processing
- Pure Data DSP execution
- Oversampling (if enabled)
- Output limiting (if enabled)
void
DSP Configuration
void
0= No oversampling (default)1= 2x oversampling2= 4x oversampling3= 8x oversampling
void
- Prevents output clipping
- Removes non-finite numbers (NaN, infinity)
- Enabled by default for protection
Parameter Management
void
[param] object and must be enabled to appear in the DAW.void
Playhead and Transport
void
[playhead] object. Includes:- Transport state (playing/stopped/recording)
- Position (PPQ, samples, seconds)
- Tempo (BPM)
- Time signature
- Loop points
- Frame rate
Patch Management
pd::Patch::Ptr
pd::Patch::Ptr
MIDI Handling
void
void
State Management
void
- Patch contents
- Parameter values
- Extra data from
[daw_storage] - UI state
void
[daw_storage] objects. Data is serialized to XML and stored with the plugin state.Latency Compensation
void
[plugin_latency] reports latency. Updates the DAW’s latency compensation.Properties
SettingsFile*
Global settings file manager. Contains user preferences and configuration.
pd::Library*
Object library for searching and accessing Pure Data object documentation.
AtomicValue<int>
Current oversampling factor (0 = none, 1 = 2x, 2 = 4x, 3 = 8x).
AtomicValue<bool>
Whether the output safety limiter is enabled (default: true).
AtomicValue<float>*
Master output volume control.
Value
Plugin tail length in seconds (for reverb, delay, etc.).
OwnedArray<PluginEditor>
All currently open editor windows.
Constants
static constexpr int
Maximum number of DAW parameters: 512
static constexpr int
Maximum number of input buses: 16
static constexpr int
Maximum number of output buses: 16
Usage Example
See Also
pd::Instance- Pure Data instance wrapper (Source/Pd/Instance.h)Canvas- Patch canvas and object managementPluginEditor- UI editor component[param]- Parameter object[playhead]- Playhead object[plugin_latency]- Latency reporting object
