Audio Unit Types
Audio Unit Types
Just a quick reference for Audio Unit types.
Introduction
I’ve been posting about writing AUv3 MIDI plugins (type MIDI Processor or aumi). As you’re mostly like aware, there are other Audio Unit types. Here I simply want to summarize what they are and what they do.
When you create an Audio Unit Extension, you will get this wizard panel.
If you look at the Audio Unit Extension XCode template (the standard templates are inside XCode.app; right click and choose Show Package Contents), these are the current types for this option. (I hope they will update these in a later release).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<dict> <key>Instrument</key> <dict> <key>audioUnitTypeCode</key> <string>aumu</string> <key>audioUnitTypeTags</key> <string><![CDATA[<string>Synthesizer</string> ]]></string> </dict> <key>Generator</key> <dict> <key>audioUnitTypeCode</key> <string>augn</string> <key>audioUnitTypeTags</key> <string></string> </dict> <key>Effect</key> <dict> <key>audioUnitTypeCode</key> <string>aufx</string> <key>audioUnitTypeTags</key> <string><![CDATA[<string>Effects</string> ]]></string> </dict> <key>Music Effect</key> <dict> <key>audioUnitTypeCode</key> <string>aumf</string> <key>audioUnitTypeTags</key> <string><![CDATA[<string>Effects</string> <string>MIDI</string> ]]></string> </dict> |
Instrument | aumu | kAudioUnitType_MusicDevice |
Generator | augn | kAudioUnitType_Generator |
Effect | aufx | kAudioUnitType_Effect |
Music Effect | aumf | kAudioUnitType_MusicEffect |
(not in wizard) MIDI Processor | aumi | kAudioUnitType_MIDIProcessor |
The Instrument type could be a Synthesizer or Sampler. It generates audio which can be controlled by MIDI input.
The Generator type does not receive input. It generates and outputs audio.
The Effect processes input audio and sends it out altered. A Filter is a good example.
The Music Effect type receives MIDI, usually for controlling audio DSP parameters such as a filter’s cutoff frequency. It outputs audio.
The MIDI Processor receives and sends MIDI messages. It doesn’t have to output audio. This type is not widely supported by hosts yet. AUM and Cubasis 2 support it. Auria Pro does not yet.
Audio Unit Types enum
There are constants for each type, and more than the above list defined in AUComponent.h.
You may have seen these constants if you have ever created an AUGraph.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
CF_ENUM(UInt32) { kAudioUnitType_Output = 'auou', kAudioUnitType_MusicDevice = 'aumu', kAudioUnitType_MusicEffect = 'aumf', kAudioUnitType_FormatConverter = 'aufc', kAudioUnitType_Effect = 'aufx', kAudioUnitType_Mixer = 'aumx', kAudioUnitType_Panner = 'aupn', kAudioUnitType_Generator = 'augn', kAudioUnitType_OfflineEffect = 'auol', kAudioUnitType_MIDIProcessor = 'aumi' }; // and remote versions on the iPhone CF_ENUM(UInt32) { kAudioUnitType_RemoteEffect = 'aurx', kAudioUnitType_RemoteGenerator = 'aurg', kAudioUnitType_RemoteInstrument = 'auri', kAudioUnitType_RemoteMusicEffect = 'aurm' }; |
Summary
There are several Audio Unit types. When you create an Audio Unit you need to choose the appropriate one. The code you write – beyond the usual plumbing – depends on this type.
Resources
Apple’s audio_unit_types Documentation
Other posts in this series
Audio Units (AUv3) MIDI extension – Part 0: Getting Started
Audio Units (AUv3) MIDI extension – Part 1: Parameters
Audio Units (AUv3) MIDI extension – Part 2: C++
Audio Units (AUv3) MIDI extension – Part 3: Presets