Standalone App Platform API
The standalone app implementation enables iPlug2 plugins to run as independent desktop applications on Windows, macOS, and Linux.Overview
TheIPlugAPP class implements a minimal host environment, allowing your plugin to run as a standalone application with full audio I/O, MIDI I/O, and plugin UI.
Standalone apps are useful for testing, distribution to users who don’t have DAWs, and creating specialized audio tools. They use the same plugin code as your VST3, AU, or AAX builds.
Core Class
IPlugAPP
Defined in:IPlug/APP/IPlugAPP.h
- Audio device I/O
- MIDI device I/O
- Parameter automation (no host automation)
- Window management
- Settings persistence
Key Methods
Host Communication
Standalone apps have no external host, so these methods are mostly no-ops:BeginInformHostOfParamChange
idx- Parameter index
InformHostOfParamChange
idx- Parameter indexnormalizedValue- Normalized parameter value (0.0 to 1.0)
EndInformHostOfParamChange
idx- Parameter index
InformHostOfPresetChange
Editor
EditorResize
viewWidth- New width in pixelsviewHeight- New height in pixels
true on success
In standalone mode, the window can be freely resized. The resize is applied immediately without host negotiation.
MIDI
SendMidiMsg
msg- MIDI message to send
true if message was sent successfully
Example:
SendSysEx
msg- SysEx message to send
true if message was sent successfully
Editor Delegate
SendSysexMsgFromUI
msg- SysEx message to send
This method handles thread safety when sending SysEx from the UI to the audio thread.
Standalone-Specific Methods
AppProcess
inputs- Array of input buffers (one per input channel)outputs- Array of output buffers (one per output channel)nFrames- Number of frames to process
Standalone Host
IPlugAPPHost
The standalone host wrapper (not directly exposed in your plugin code) provides:- Audio device enumeration and selection
- MIDI device enumeration and selection
- Buffer size and sample rate configuration
- Settings persistence
- Audio/MIDI routing
The standalone host is created automatically when your app launches. It provides the infrastructure for audio/MIDI I/O without requiring DAW-specific code.
Configuration
Standalone App Configuration
Set in your plugin’sconfig.h:
Audio I/O Configurations
Stereo Effect
Stereo Generator
Mono to Stereo
Multichannel
Debug Features
Debug Menu: Debug builds include a special menu with useful development features:
- Screenshot capture
- Performance metrics
- Parameter dump
- State save/load testing
Enabling Screenshots
Settings Persistence
Standalone apps automatically save and restore:- Audio device selection
- MIDI device selection
- Buffer size and sample rate
- Window position and size
- Plugin state (presets, parameters)
Windows
macOS
Linux
Audio Backend
Standalone apps use different audio APIs on each platform:- Windows: ASIO (if available), otherwise WASAPI
- macOS: Core Audio
- Linux: ALSA or JACK
The audio backend is selected automatically. Users can choose different devices and buffer sizes through the standalone app’s audio settings.
MIDI Routing
MIDI Input
MIDI input devices can be selected from the app’s MIDI settings. All MIDI messages from the selected device are routed to your plugin’s MIDI processing.MIDI Output
MIDI output devices can be selected from the app’s MIDI settings. Messages sent viaSendMidiMsg() are routed to the selected output device.
Factory Function
MakePlug
info- Instance information containing:pAppHost- Pointer to theIPlugAPPHostinstance
Building Standalone Apps
Build Configuration
Installer Creation
Windows
Use Inno Setup for Windows installers:
macOS
Create .app bundle and DMG:
Best Practices
Default Settings
Provide sensible default audio settings. Use 48kHz sample rate and 512 sample buffer size as defaults.
Settings UI
Expose audio and MIDI settings through your plugin’s UI or a preferences menu for user convenience.
State Persistence
Implement state serialization properly. Standalone apps rely on it for preset and settings persistence.
Error Handling
Handle audio device failures gracefully. Show error messages if audio devices can’t be opened.
Common Issues
Related Documentation
- IPlugAPIBase - Base API functionality
- IPlugProcessor - Audio processing interface
- Plugin Configuration - Plugin configuration options
- Building Projects - Build system documentation