Audio Unit v3 Platform API
The Audio Unit v3 (AUv3) implementation provides full integration with Apple’s modern Audio Unit architecture, supporting both macOS and iOS platforms.Overview
TheIPlugAUv3 class implements the AUv3 API using Apple’s AUAudioUnit framework. AUv3 plugins are app extensions that can be loaded in compatible hosts on both desktop and mobile platforms.
AUv3 is Apple’s modern Audio Unit format, introduced in iOS 9 and macOS 10.11. It offers better sandboxing, app extension architecture, and improved iOS support compared to AUv2.
Core Class
IPlugAUv3
Defined in:IPlug/AUv3/IPlugAUv3.h
- Audio rendering with
AURenderEventprocessing - Parameter observation and notification
- Buffer attachment and management
- Sample rate and block size adaptation
Key Methods
Host Communication
BeginInformHostOfParamChange
idx- Parameter index
InformHostOfParamChange
idx- Parameter indexnormalizedValue- Normalized parameter value (0.0 to 1.0)
EndInformHostOfParamChange
idx- Parameter index
MIDI
SendMidiMsg
msg- MIDI message to send
true if message was sent successfully
SendSysEx
msg- SysEx message to send
true if message was sent successfully
Editor
EditorResize
viewWidth- New width in points (not pixels)viewHeight- New height in points (not pixels)
true if resize was accepted
iOS uses points rather than pixels. The actual pixel dimensions depend on the device’s scale factor (Retina displays have scale factors of 2x or 3x).
AUv3-Specific Methods
ProcessWithEvents
timestamp- Audio timestamp for this renderframeCount- Number of frames to processevents- Linked list of render events (parameters, MIDI, etc.)timeInfo- Transport and timing information
Parameter Management
SetParameterFromValueObserver
address- AUv3 parameter addressvalue- Parameter value (in parameter’s native range)
SendParameterValueFromObserver
address- AUv3 parameter addressvalue- Parameter value
GetParameter
address- AUv3 parameter address
GetParamDisplay
address- AUv3 parameter addressvalue- Parameter value
GetParamStringToValue
address- AUv3 parameter addressstr- Display string
Parameter Address Mapping
AddParamAddress
paramIdx- iPlug parameter indexparamAddress- AUv3 parameter address (typically derived from parameter tree)
GetParamAddress
paramIdx- iPlug parameter index
GetParamIdx
paramAddress- AUv3 parameter address
Buffer Management
AttachInputBuffers
pInBufferList- Audio buffer list containing input buffers
AttachOutputBuffers
pOutBufferList- Audio buffer list containing output buffersbusNumber- Output bus number
Initialization
Prepare
sampleRate- Sample rate in HzblockSize- Maximum block size in frames
SetAUAudioUnit
pAUAudioUnit- Pointer to AUAudioUnit Objective-C object
Offline Rendering
SetOffline
renderingOffline-truefor offline rendering
Offline rendering allows plugins to use more CPU-intensive algorithms or disable real-time constraints.
Specialized Methods
GetNamedMessageChannel
name- Channel name
nullptr if not supported
Override this method to provide custom message channels for advanced UI-to-audio communication.
GetLastAudioTimeStamp
Specialist Use: For hosting Audio Units within Audio Units. Thread safety: returns a snapshot that may be stale if called off the audio thread.
Configuration
AUv3 App Extension
AUv3 plugins are built as app extensions. Your Xcode project needs:-
App Extension Target
- Type: Audio Unit Extension
- Embedded in a container app
- Info.plist Configuration
- Embedded Resources
- App icon
- Any required asset bundles
Effect Types
Type Codes:
aufx- Audio Effectaumu- Music Device (Instrument)aumf- Music Effect (MIDI Effect)auol- Offline Effectaupn- Panner
Tag Categories
Common Tags:
- Effects, Reverb, Delay
- EQ, Dynamics, Distortion
- Synth, Sampler, Drum
- Analyzer, Utility
Factory Function
MakePlug
info- Instance information (currently empty struct for AUv3)
Best Practices
Parameter Trees
Organize parameters into logical groups using AUv3 parameter trees for better host integration and UI.
View Configuration
Support multiple view configurations for different iOS device sizes using
OnHostRequestingSupportedViewConfiguration().Background Audio
Configure audio session properly in your container app for background audio support on iOS.
State Restoration
Implement proper state save/restore for iOS app lifecycle events and host state management.
iOS Considerations
App Extensions: AUv3 plugins must be packaged with a host app. The host app can be minimal but must be present on the App Store.
Common Issues
Related Documentation
- AUv2 Platform API - Legacy Audio Unit format
- IPlugAPIBase - Base API functionality
- IPlugProcessor - Audio processing interface
- iOS Configuration - iOS-specific setup
- AUv3 Developer Documentation - Apple’s official documentation