---
title: AUAudioUnit
framework: audiotoolbox
role: symbol
role_heading: Class
path: audiotoolbox/auaudiounit
---

# AUAudioUnit

A class that defines a host’s interface to an audio unit.

## Declaration

```swift
class AUAudioUnit
```

## Mentioned in

Adding Parallel Real-Time Threads to Audio Workgroups Rendering Spatial Audio from Bluetooth headphones

## Overview

Overview Hosts can instantiate either version 3 or version 2 audio units with this class, and to some extent control whether an audio unit is instantiated in-process or in a separate extension process. Version 3 audio units should subclass the AUAudioUnit class. Version 3 audio unit components can be registered in the following ways: Package the component into an app extension containing an AudioComponents  Info.plist entry. The principal class must conform to the AUAudioUnitFactory protocol, which will typically instantiate an AUAudioUnit subclass. Call the registerSubclass(_:as:name:version:) method to associate a component description with an AUAudioUnit subclass. Use the convention <manufacturer name>:<audio unit name> when naming your audio unit component. Version 2 audio units should subclass the AUAudioUnitV2Bridge class instead. Version 2 audio unit components can be registered in the following ways: Package the component into a component bundle containing an AudioComponents Info.plist entry, referring to an AudioComponentFactoryFunction function. Call the AudioComponentRegister function to associate a component description with an AudioComponentFactoryFunction function. A host does not need to be aware of the concrete AUAudioUnit subclass that is being instantiated. The init(componentDescription:options:) method ensures that the proper subclass is used. important: When using the AUAudioUnit class with a version 2 audio unit, or the C AudioComponent and AudioUnit APIs with a version 3 audio unit, all major pieces of functionality are bridged between the two APIs. When applicable, this document references the version 2 API equivalent of each version 3 method or property.

## Topics

### Creating an Audio Unit

- [init(componentDescription:)](audiotoolbox/auaudiounit/init(componentdescription:).md)
- [init(componentDescription:options:)](audiotoolbox/auaudiounit/init(componentdescription:options:).md)
- [instantiate(with:options:completionHandler:)](audiotoolbox/auaudiounit/instantiate(with:options:completionhandler:).md)

### Returning the Audio Busses

- [inputBusses](audiotoolbox/auaudiounit/inputbusses.md)
- [outputBusses](audiotoolbox/auaudiounit/outputbusses.md)

### Customizing the Audio Unit Behavior

- [registerSubclass(_:as:name:version:)](audiotoolbox/auaudiounit/registersubclass(_:as:name:version:).md)
- [shouldChange(to:for:)](audiotoolbox/auaudiounit/shouldchange(to:for:).md)
- [setRenderResourcesAllocated(_:)](audiotoolbox/auaudiounit/setrenderresourcesallocated(_:).md)
- [internalRenderBlock](audiotoolbox/auaudiounit/internalrenderblock.md)
- [midiOutputBufferSizeHint](audiotoolbox/auaudiounit/midioutputbuffersizehint.md)
- [AUInternalRenderBlock](audiotoolbox/auinternalrenderblock.md)

### Querying Parameters

- [parameterTree](audiotoolbox/auaudiounit/parametertree.md)
- [allParameterValues](audiotoolbox/auaudiounit/allparametervalues.md)
- [parametersForOverview(withCount:)](audiotoolbox/auaudiounit/parametersforoverview(withcount:).md)

### Providing Data to the Host

- [musicalContextBlock](audiotoolbox/auaudiounit/musicalcontextblock.md)
- [transportStateBlock](audiotoolbox/auaudiounit/transportstateblock.md)
- [contextName](audiotoolbox/auaudiounit/contextname.md)
- [supportsMPE](audiotoolbox/auaudiounit/supportsmpe.md)
- [AUHostMusicalContextBlock](audiotoolbox/auhostmusicalcontextblock.md)
- [AUHostTransportStateBlock](audiotoolbox/auhosttransportstateblock.md)

### Managing MIDI Events

- [isMusicDeviceOrEffect](audiotoolbox/auaudiounit/ismusicdeviceoreffect.md)
- [virtualMIDICableCount](audiotoolbox/auaudiounit/virtualmidicablecount.md)
- [scheduleMIDIEventBlock](audiotoolbox/auaudiounit/schedulemidieventblock.md)
- [midiOutputEventBlock](audiotoolbox/auaudiounit/midioutputeventblock.md)
- [midiOutputNames](audiotoolbox/auaudiounit/midioutputnames.md)
- [AUScheduleMIDIEventBlock](audiotoolbox/auschedulemidieventblock.md)
- [AUMIDIOutputEventBlock](audiotoolbox/aumidioutputeventblock.md)

### Managing Presets

- [fullState](audiotoolbox/auaudiounit/fullstate.md)
- [fullStateForDocument](audiotoolbox/auaudiounit/fullstatefordocument.md)
- [factoryPresets](audiotoolbox/auaudiounit/factorypresets.md)
- [currentPreset](audiotoolbox/auaudiounit/currentpreset.md)
- [supportsUserPresets](audiotoolbox/auaudiounit/supportsuserpresets.md)
- [userPresets](audiotoolbox/auaudiounit/userpresets.md)
- [saveUserPreset(_:)](audiotoolbox/auaudiounit/saveuserpreset(_:).md)
- [deleteUserPreset(_:)](audiotoolbox/auaudiounit/deleteuserpreset(_:).md)
- [presetState(for:)](audiotoolbox/auaudiounit/presetstate(for:).md)

### Managing the Render Cycle

- [allocateRenderResources()](audiotoolbox/auaudiounit/allocaterenderresources().md)
- [deallocateRenderResources()](audiotoolbox/auaudiounit/deallocaterenderresources().md)
- [reset()](audiotoolbox/auaudiounit/reset().md)
- [renderResourcesAllocated](audiotoolbox/auaudiounit/renderresourcesallocated.md)
- [renderBlock](audiotoolbox/auaudiounit/renderblock.md)
- [scheduleParameterBlock](audiotoolbox/auaudiounit/scheduleparameterblock.md)
- [maximumFramesToRender](audiotoolbox/auaudiounit/maximumframestorender.md)
- [token(byAddingRenderObserver:)](audiotoolbox/auaudiounit/token(byaddingrenderobserver:).md)
- [removeRenderObserver(_:)](audiotoolbox/auaudiounit/removerenderobserver(_:).md)
- [AURenderObserver](audiotoolbox/aurenderobserver.md)

### Messaging Channels

- [messageChannel(for:)](audiotoolbox/auaudiounit/messagechannel(for:).md)
- [AUMessageChannel](audiotoolbox/aumessagechannel.md)

### Optimizing Performance

- [latency](audiotoolbox/auaudiounit/latency.md)
- [tailTime](audiotoolbox/auaudiounit/tailtime.md)
- [renderQuality](audiotoolbox/auaudiounit/renderquality.md)
- [shouldBypassEffect](audiotoolbox/auaudiounit/shouldbypasseffect.md)
- [canProcessInPlace](audiotoolbox/auaudiounit/canprocessinplace.md)
- [isRenderingOffline](audiotoolbox/auaudiounit/isrenderingoffline.md)

### Describing the Audio Unit

- [componentDescription](audiotoolbox/auaudiounit/componentdescription.md)
- [component](audiotoolbox/auaudiounit/component.md)
- [componentName](audiotoolbox/auaudiounit/componentname.md)
- [componentVersion](audiotoolbox/auaudiounit/componentversion.md)
- [audioUnitName](audiotoolbox/auaudiounit/audiounitname.md)
- [audioUnitShortName](audiotoolbox/auaudiounit/audiounitshortname.md)
- [manufacturerName](audiotoolbox/auaudiounit/manufacturername.md)

### Configuring the Channel Capabilities

- [channelCapabilities](audiotoolbox/auaudiounit/channelcapabilities.md)
- [channelMap](audiotoolbox/auaudiounit/channelmap.md)
- [profileState(forCable:channel:)](audiotoolbox/auaudiounit/profilestate(forcable:channel:).md)
- [enable(_:cable:onChannel:)](audiotoolbox/auaudiounit/enable(_:cable:onchannel:).md)
- [disableProfile(_:cable:onChannel:)](audiotoolbox/auaudiounit/disableprofile(_:cable:onchannel:).md)
- [profileChangedBlock](audiotoolbox/auaudiounit/profilechangedblock.md)

### Configuring the Device

- [deviceID](audiotoolbox/auaudiounit/deviceid.md)
- [setDeviceID(_:)](audiotoolbox/auaudiounit/setdeviceid(_:).md)
- [canPerformInput](audiotoolbox/auaudiounit/canperforminput.md)
- [canPerformOutput](audiotoolbox/auaudiounit/canperformoutput.md)
- [isInputEnabled](audiotoolbox/auaudiounit/isinputenabled.md)
- [isOutputEnabled](audiotoolbox/auaudiounit/isoutputenabled.md)
- [inputHandler](audiotoolbox/auaudiounit/inputhandler.md)
- [outputProvider](audiotoolbox/auaudiounit/outputprovider.md)
- [deviceInputLatency](audiotoolbox/auaudiounit/deviceinputlatency.md)
- [deviceOutputLatency](audiotoolbox/auaudiounit/deviceoutputlatency.md)
- [startHardware()](audiotoolbox/auaudiounit/starthardware().md)
- [stopHardware()](audiotoolbox/auaudiounit/stophardware().md)
- [AURenderPullInputBlock](audiotoolbox/aurenderpullinputblock.md)

### Configuring the User Interface

- [providesUserInterface](audiotoolbox/auaudiounit/providesuserinterface.md)
- [supportedViewConfigurations(_:)](audiotoolbox/auaudiounit/supportedviewconfigurations(_:).md)
- [select(_:)](audiotoolbox/auaudiounit/select(_:).md)

### Getting the Runtime Behavior

- [isRunning](audiotoolbox/auaudiounit/isrunning.md)
- [isLoadedInProcess](audiotoolbox/auaudiounit/isloadedinprocess.md)

### Constants

- [AUEventSampleTime](audiotoolbox/1387633-aueventsampletime.md)
- [AUAudioUnitBusType](audiotoolbox/auaudiounitbustype.md)
- [AUHostTransportStateFlags](audiotoolbox/auhosttransportstateflags.md)
- [AURenderEventType](audiotoolbox/aurendereventtype.md)
- [AURenderBlock](audiotoolbox/aurenderblock.md)
- [AUInputHandler](audiotoolbox/auinputhandler.md)

### Getting the Audio Unit Presets

- [kAUPresetNumberKey](audiotoolbox/kaupresetnumberkey.md)
- [kAUPresetCPULoadKey](audiotoolbox/kaupresetcpuloadkey.md)
- [kAUPresetDataKey](audiotoolbox/kaupresetdatakey.md)
- [kAUPresetElementNameKey](audiotoolbox/kaupresetelementnamekey.md)
- [kAUPresetExternalFileRefs](audiotoolbox/kaupresetexternalfilerefs.md)
- [kAUPresetMASDataKey](audiotoolbox/kaupresetmasdatakey.md)
- [kAUPresetManufacturerKey](audiotoolbox/kaupresetmanufacturerkey.md)
- [kAUPresetNameKey](audiotoolbox/kaupresetnamekey.md)
- [kAUPresetPartKey](audiotoolbox/kaupresetpartkey.md)
- [kAUPresetRenderQualityKey](audiotoolbox/kaupresetrenderqualitykey.md)
- [kAUPresetSubtypeKey](audiotoolbox/kaupresetsubtypekey.md)
- [kAUPresetTypeKey](audiotoolbox/kaupresettypekey.md)
- [kAUPresetVSTDataKey](audiotoolbox/kaupresetvstdatakey.md)
- [kAUPresetVSTPresetKey](audiotoolbox/kaupresetvstpresetkey.md)
- [kAUPresetVersionKey](audiotoolbox/kaupresetversionkey.md)

### Instance properties

- [audioUnitMIDIProtocol](audiotoolbox/auaudiounit/audiounitmidiprotocol.md)
- [hostMIDIProtocol](audiotoolbox/auaudiounit/hostmidiprotocol.md)
- [midiOutputEventListBlock](audiotoolbox/auaudiounit/midioutputeventlistblock.md)
- [migrateFromPlugin](audiotoolbox/auaudiounit/migratefromplugin.md)
- [scheduleMIDIEventListBlock](audiotoolbox/auaudiounit/schedulemidieventlistblock.md)

### Instance Methods

- [requestViewController(completionHandler:)](audiotoolbox/auaudiounit/requestviewcontroller(completionhandler:).md)

### Instance Properties

- [intendedSpatialExperience](audiotoolbox/auaudiounit/intendedspatialexperience-7uqrm.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Inherited By

- [AUAudioUnitV2Bridge](audiotoolbox/auaudiounitv2bridge.md)
- [AUHeadTrackingBinauralRenderer](audiotoolbox/auheadtrackingbinauralrenderer.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Audio Units

- [Creating an audio unit extension](avfaudio/creating-an-audio-unit-extension.md)
- [Creating custom audio effects](avfaudio/creating-custom-audio-effects.md)
- [Incorporating Audio Effects and Instruments](audiotoolbox/incorporating-audio-effects-and-instruments.md)
- [Debugging Out-of-Process Audio Units on Apple Silicon](audiotoolbox/debugging-out-of-process-audio-units-on-apple-silicon.md)
- [Rendering Spatial Audio from Bluetooth headphones](audiotoolbox/rendering-spatial-audio-from-bluetooth-headphones.md)
- [AUAudioUnitBus](audiotoolbox/auaudiounitbus.md)
- [AUAudioUnitBusArray](audiotoolbox/auaudiounitbusarray.md)
- [AUAudioUnitPreset](audiotoolbox/auaudiounitpreset.md)
- [AUAudioUnitV2Bridge](audiotoolbox/auaudiounitv2bridge.md)
- [AUHeadTrackingBinauralRenderer](audiotoolbox/auheadtrackingbinauralrenderer.md)
- [AudioUnitExtensionCopyComponentList(_:)](audiotoolbox/audiounitextensioncopycomponentlist(_:).md)
- [AudioUnitExtensionSetComponentList(_:_:)](audiotoolbox/audiounitextensionsetcomponentlist(_:_:).md)
- [AUAudioUnitFactory](audiotoolbox/auaudiounitfactory.md)
