Skip to main content
iPlug2 includes a comprehensive set of example projects that serve as templates for creating audio plugins. Each example demonstrates specific features and can be duplicated to start your own project.

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:
Examples/IPlugEffect/
├── IPlugEffect.h         # Plugin header with parameter enum
├── IPlugEffect.cpp       # Plugin implementation
├── config.h              # Plugin metadata and format settings
└── resources/            # Images, fonts, and other assets
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:
1

config.h

Defines plugin metadata, formats, I/O configuration, and resource paths
2

Plugin.h

Declares the plugin class, parameters enum, and any DSP helper classes
3

Plugin.cpp

Implements the constructor (with UI layout), ProcessBlock, and event handlers

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
The ProcessBlock method must be realtime-safe. Avoid allocations, mutex locks, and file I/O in audio processing code.

Next Steps

IPlugEffect

Start with a simple audio effect

IPlugInstrument

Build a synthesizer instrument

IPlugControls

Explore all available UI controls

Build docs developers (and LLMs) love