Overview
iPlug2 provides a Python script that duplicates example projects to create new plugins. This is the recommended way to start a new plugin project.Prerequisites
- Python 2 or 3 installed
- iPlug2 repository cloned
- Python accessible from command line (Windows users need to add Python to PATH)
Using duplicate.py
Theduplicate.py script is located in Examples/ and creates a new plugin by copying an existing example.
Basic Usage
IPlugEffect (source template)MyDelay (new project name)MyCompany (your company/brand name)Naming Rules:
- No spaces in project or manufacturer names
- Use CamelCase (e.g.,
MyAwesomePlugin) - Avoid numbers, dots, or special characters at the start
What Gets Duplicated
The script performs these operations:Files Copied
- Source code (.h, .cpp)
- Project files (.sln, .xcodeproj)
- Build configurations
- Resource files
- Scripts
Strings Replaced
- Project name
- CAPITALIZED names
- Manufacturer name
- iPlug2 root path (if needed)
Files Created
Configuration
After duplication, editconfig.h to customize your plugin:
config.h
Plugin IDs
PLUG_UNIQUE_ID must be unique across all plugins. Use 4 alphanumeric characters (e.g.,
'MdL1').PLUG_MFR_ID identifies your company. Register a code or use your initials (e.g., 'ACME').Project Structure
Main Files
Every iPlug2 plugin has three core files:- Header (.h)
- Source (.cpp)
- Config (config.h)
MyDelay.h
Build System
iPlug2 supports multiple build systems:Visual Studio
.sln files for WindowsAAX, VST3, CLAP, StandaloneXcode
.xcworkspace for macOS/iOSAU, VST3, CLAP, AAX, Standalone, AUv3CMake
Cross-platformAll formats, Web Audio (WASM)
Next Steps
Audio Effects
Build audio processors with parameters and DSP
Instruments
Create MIDI synthesizers with polyphony
MIDI Effects
Process MIDI messages and generate notes
Parameters
Learn about parameter types and configuration
Troubleshooting
Error: input project doesn't exist
Error: input project doesn't exist
Check the spelling and case of the template name. Template must exist in the
Examples/ directory.Error: output project already exists
Error: output project already exists
The destination directory already exists. Choose a different name or delete the existing directory.
Error: name has spaces
Error: name has spaces
Project, manufacturer, and path names cannot contain spaces. Use CamelCase instead.
Can't parse plugin config (REAPER extensions)
Can't parse plugin config (REAPER extensions)
This is expected for REAPER extensions. They don’t use the standard plugin config format.