Getting Started Examples
These three examples provide the foundation for most plugin development:IPlugEffect
A basic audio effect with a volume control - perfect for learning the fundamentals
IPlugInstrument
An MPE-capable polyphonic synthesizer with ADSR and LFO
IPlugControls
A comprehensive showcase of all available UI controls in the IControls library
Specialized Examples
Beyond the basics, iPlug2 provides examples for advanced use cases:IPlugChunks
Store custom data beyond parameters and access tempo information
IPlugMidiEffect
MIDI processing plugin (primarily for AudioUnits)
IPlugSideChain
Multiple input buses for compressors and gates
IPlugSurroundEffect
Multichannel volume control for surround buses
IPlugDrumSynth
Drum synthesizer with multiple output buses
IPlugResponsiveUI
Resizable UI that adapts to the platform window
IPlugOSCEditor
Open Sound Control integration with WebView
IPlugConvoEngine
Convolution engine with plugin delay compensation
IPlugVisualizer
Audio signal visualization techniques
Alternative UI Examples
iPlug2 supports multiple UI frameworks beyond the default IGraphics:IPlugCocoaUI
Native iOS/macOS UI using AppKit/UIKit
IPlugSwiftUI
Modern iOS/macOS UI with SwiftUI
IPlugWebUI
HTML/CSS/JavaScript interface using platform webview
IPlugP5js
WebGL rendering using p5.js
IPlugSvelteUI
Reactive UI framework with Svelte
REAPER Integration Examples
Special examples for extending the REAPER DAW:IPlugReaperExtension
Create REAPER extensions with Win32 API abstraction
IPlugReaperPlugin
Plugins that call REAPER ReaScript API functions
Project Structure
All example projects follow a consistent structure:Each example can be duplicated to start a new project. Modify
config.h to set your plugin name, manufacturer, and unique IDs.Core Files
Every iPlug2 project consists of three main files:Key Concepts
All examples demonstrate these fundamental concepts:- Parameters: Fixed count at compile time, indexed by enum, using non-normalized values
- ProcessBlock: Realtime-safe audio processing (no allocations, locks, or file I/O)
- UI Construction: Typically built in a lambda within the plugin constructor
- Control Linking: UI controls linked to parameters via parameter ID
- Data Transmission: ISender classes for passing data from audio thread to UI
Next Steps
IPlugEffect
Start with a simple audio effect
IPlugInstrument
Build a synthesizer instrument
IPlugControls
Explore all available UI controls