Skip to main content

What is iPlug2?

iPlug2 is a comprehensive C++ audio plugin framework that enables you to create professional audio plugins for desktop, mobile, XR, and web platforms. With a single codebase, you can target multiple plugin formats including VST3, AUv2, AUv3, AAX, CLAP, and Web Audio Modules.

Quick Start

Build your first audio plugin in minutes

Installation

Set up your development environment

Core Concepts

Learn the framework architecture

Examples

Explore example projects

Key Features

Cross-Platform

Write once, deploy everywhere: Windows, macOS, iOS, visionOS, and web browsers via WebAssembly

Multiple Plugin Formats

Support for VST3, AUv2, AUv3, AAX, CLAP, WAM, standalone apps, and REAPER extensions

GPU-Accelerated Graphics

Choice of NanoVG or Skia backends for high-performance vector graphics and custom UIs

Rich Controls Library

50+ built-in UI controls including knobs, sliders, buttons, and visualizers

Alternative UI Frameworks

Use SwiftUI, UIKit, WebView, or web frameworks like Svelte for your plugin UI

DSP Utilities

Built-in oscillators, envelopes, filters, oversampling, and audio processing tools

Two Main Components

IPlug Core

The core plugin abstraction layer that handles:
  • Parameter management and automation
  • Audio and MIDI processing
  • State serialization and preset management
  • Host communication across all plugin formats
  • Real-time safe threading

IGraphics

A flexible graphics framework featuring:
  • Multiple rendering backends (NanoVG, Skia)
  • Extensive control library
  • Custom control creation
  • Responsive and resizable UIs
  • Live editing capabilities
IGraphics is optional. You can use alternative UI frameworks like SwiftUI, Cocoa, or web-based UIs instead.

Supported Platforms

  • Windows: Windows 8+ (x64, ARM64EC)
  • macOS: macOS 10.13+
  • iOS: iOS 15+
  • visionOS: visionOS 26.0+
  • Web: Modern browsers via WebAssembly/Emscripten

Plugin Format Support

FormatDescriptionPlatforms
VST3Steinberg VST 3Windows, macOS
AUv2Apple Audio Units v2macOS
AUv3Apple Audio Units v3macOS, iOS, visionOS
AAXAvid Audio eXtensionWindows, macOS
CLAPCLever Audio PluginWindows, macOS
WAMWeb Audio ModuleWeb browsers
StandaloneIndependent applicationAll platforms

Architecture Overview

// Simplified plugin structure
class MyPlugin : public iplug::Plugin
{
public:
  MyPlugin(const iplug::InstanceInfo& info)
  : Plugin(info, MakeConfig(kNumParams, kNumPresets))
  {
    // Initialize parameters
    GetParam(kGain)->InitDouble("Gain", 0., -70., 12.0, 0.01, "dB");
    
    // Setup UI (optional)
    #if IPLUG_EDITOR
    mMakeGraphicsFunc = [&]() {
      return MakeGraphics(*this, PLUG_WIDTH, PLUG_HEIGHT);
    };
    #endif
  }
  
  void ProcessBlock(sample** inputs, sample** outputs, int nFrames) override
  {
    // Real-time audio processing
    const double gain = DBToAmp(GetParam(kGain)->Value());
    
    for (int c = 0; c < NOutChannelsConnected(); c++) {
      for (int s = 0; s < nFrames; s++) {
        outputs[c][s] = inputs[c][s] * gain;
      }
    }
  }
};

Community & Resources

GitHub Repository

View source code and contribute

Discussion Forum

Join the community discussion

Discord Server

Chat with other developers

API Documentation

Browse the full API reference

Next Steps

1

Set up your environment

Follow the installation guide to install required tools and SDKs
2

Build your first plugin

Work through the quickstart to create a simple audio effect
3

Explore examples

Study the example projects to learn common patterns
4

Dive deeper

iPlug2 is licensed under a permissive zlib-like license, making it free to use in commercial closed-source projects.