Operating Modes
plugindata can run in two distinct modes, each optimized for different workflows:- Plugin Mode - Runs inside a DAW as a VST3/AU/LV2/CLAP plugin
- Standalone Mode - Runs as an independent desktop application
Standalone Mode
Architecture
Standalone mode runs as a native application with full system access. FromPluginProcessor.cpp:54-82, the audio bus configuration differs:
Features
Window Management- Multiple windows support
- Native window decorations
- Maximizable/fullscreen
- Independent window positioning
- Direct file system access
- Save/load patches anywhere
- External file management
- No DAW session dependency
- Direct hardware access
- Selectable audio interfaces
- Virtual MIDI ports
- System MIDI devices
- Internal synthesizer support
PluginProcessor.cpp:175-179:
- Open multiple patches simultaneously
- Tab-based interface
- Split view support
- Independent patch states
- Global audio/MIDI settings
- Theme customization
- Library management
- Path configuration
Audio I/O Configuration
Standalone provides direct control over: Input Configuration- Device selection
- Channel count (up to 32)
- Sample rate selection
- Buffer size adjustment
- Device selection
- Channel routing
- Sample rate matching
- Latency compensation
- Configurable block size (64 samples default)
- Independent sample rate
- Direct hardware communication
Use Cases
Development and Testing- Rapid prototyping
- Algorithm development
- Quick experimentation
- Debugging and testing
- No DAW required
- Lower latency potential
- Direct hardware access
- Simpler signal flow
- Standalone synthesizers
- Audio processors
- Effects chains
- Experimental instruments
- Learning Pure Data
- Teaching DSP concepts
- No DAW knowledge required
- Simpler environment
Plugin Mode
Architecture
plugindata integrates into DAWs using standard plugin formats:- VST3 - Steinberg’s cross-platform format
- AU - Apple’s Audio Units (macOS)
- LV2 - Open-source format (Linux)
- CLAP - Modern open standard
Integration Features
DAW Synchronization FromPluginProcessor.cpp:1055-1128, playhead information is synchronized:
- Playing/recording/looping state
- Tempo (BPM)
- Time signature
- Transport position (PPQ, samples, seconds)
- Loop points
- Frame rate
PluginProcessor.cpp:120-131, parameters are exposed:
param1throughparam64(default)- Mapped to Pd receivers:
[r param1],[r param2], etc. - Fully automatable in DAW
- Saved with DAW project
PluginProcessor.cpp:1149-1159, parameter updates:
- Patch content (embedded)
- Parameter values
- Editor size/position
- Connection paths (segmented)
- GUI states
PluginProcessor.cpp:1224-1308:
PluginProcessor.cpp:1166-1201:
Channel Configuration
Plugin mode supports flexible I/O: Input Buses- Main input (stereo, enabled)
- Aux inputs 1-N (stereo, optional)
- Up to 32 total input channels
- Main output (stereo, enabled)
- Aux outputs 1-N (stereo, optional)
- Up to 32 total output channels
Plugin-Specific Features
Presentation Mode FromPluginMode.h:13-526, dedicated plugin UI:
- Fixed-size UI mode
- Zoom levels (50%, 75%, 100%, 125%, 150%, 175%, 200%)
- Fullscreen mode (standalone only)
- Titlebar with patch name
- Edit mode toggle
- Clipped rendering area
meta.json:
PluginProcessor.cpp:699-759:
PluginProcessor.cpp:192:
Plugin Limitations
File Access- No direct file browser
- Patches embedded in DAW session
- External files must be in search path
- No arbitrary file writing
- Single window per instance
- Size constrained by plugin mode
- No multiple patches per instance
- DAW controls window state
- Bus configuration set by DAW
- Cannot change I/O at runtime
- No direct hardware access
- Routing through DAW mixer
- Fixed to DAW sample rate
- DAW controls buffer size
- Must handle variable block sizes
- Subject to DAW thread priority
Oversampling
Both modes support oversampling fromPluginProcessor.cpp:655-668:
- None (1x): Standard quality
- 2x: Good quality, moderate CPU
- 4x: High quality, higher CPU
- 8x: Maximum quality, significant CPU
Choosing the Right Mode
Use Standalone When:
✅ Prototyping new ideas quickly✅ Learning Pure Data/DSP
✅ Live performance without DAW
✅ Testing with different audio interfaces
✅ Working with multiple patches simultaneously
✅ Need direct file system access
✅ Developing standalone instruments/effects
Use Plugin When:
✅ Integrating with DAW workflow✅ Recording automation
✅ Tempo sync required
✅ Multiple instances needed
✅ Mixing with other plugins
✅ Session recall important
✅ Distributing to users with DAWs
Migration Between Modes
Standalone to Plugin
- Save patch in standalone
- Load in DAW as plugin
- Configure I/O to match DAW routing
- Map automation parameters
- Test playhead sync if needed
- Set plugin mode for presentation
Plugin to Standalone
- Export patch from DAW session
- Open in standalone
- Configure audio/MIDI devices
- Test I/O channels
- Adjust workflow for multi-patch if needed
Best Practices
Cross-Compatible Patches
To work well in both modes: Use Relative Paths- Keep external files in same directory as patch
- Use relative paths with
[declare] - Test in both modes before distribution
Performance Optimization
Plugin Mode- Minimize processing (shared CPU with DAW)
- Use efficient algorithms
- Consider oversampling cost
- Report accurate latency
- Can use more CPU if needed
- Direct hardware = lower latency possible
- Adjust buffer size for latency/stability
Next Steps
DAW Integration
Learn how plugdata integrates with your DAW
Patching Basics
Master the fundamentals of Pure Data patching
