Preset Basics
IPreset Structure
Preset Count
Define the number of factory presets in your plugin header:config.h
Some hosts don’t like 0 presets. Even if you don’t provide factory presets, set
kNumPresets = 1 and use MakeDefaultPreset().Creating Factory Presets
iPlug2 provides several methods to create baked-in factory presets:MakePreset - Sequential Values
Specify parameter values sequentially:MakePresetFromNamedParams - Named Values
Specify parameter index/value pairs for clarity:MakeDefaultPreset - Fill Uninitialized Slots
Fill remaining preset slots with default parameter values:MakePresetFromChunk - Custom State
Create presets from serialized chunks (for plugins with custom state):MakePresetFromBlob - Base64 Encoded
Create presets from base64-encoded strings:Accessing Presets
Restoring Presets
RestorePreset() automatically:- Unserializes the preset chunk
- Updates all parameter values
- Calls
OnParamReset(kPresetRecall) - Updates the current preset index
Modifying Presets
Update Current Preset
Copy Presets
Loading/Saving User Presets
VST2 Format (FXP/FXB)
iPlug2 supports VST2 preset formats across all plugin formats:Exporting Presets to Code
iPlug2 provides utilities to export current settings as code:DumpMakePresetSrc
Export preset asMakePreset() call:
DumpMakePresetFromNamedParamsSrc
Export preset asMakePresetFromNamedParams() call:
DumpPresetBlob
Export preset as base64 blob:Preset Banks (VST2)
VST2 has the concept of preset banks:Host Communication
Complete Example
Preset Management UI Example
Best Practices
State Chunks vs Parameters
When to use state chunks:
- Plugins with sample data (samplers, convolution reverbs)
- Wavetable synthesizers
- Custom data structures
- Non-parameter state (e.g., loaded file paths)
- Simple effects (EQ, compressor, delay)
- Synthesizers with only parameter-based state
- Most plugins without custom data
config.h:
API Reference
Create factory preset with sequential parameter values
Create factory preset with named parameter index/value pairs
Fill uninitialized preset slots with default parameter values
Load preset by index or name
Export current state to VST2 FXP file
Import preset from VST2 FXP file
Next Steps
Plugin Base
State serialization and parameter management
Parameters
Learn how parameters work in presets