<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "tvOS: -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "AudioToolbox",
  "identifier" : "/documentation/AudioToolbox/AUAudioUnitFactory",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Audio Toolbox"
    ],
    "preciseIdentifier" : "c:objc(pl)AUAudioUnitFactory"
  },
  "title" : "AUAudioUnitFactory"
}
-->

# AUAudioUnitFactory

An object that creates a version 3 audio unit.

```
protocol AUAudioUnitFactory : NSExtensionRequestHandling
```

## Overview

In most cases, if your audio unit specifies parameters to configure its behavior, it should provide a custom user interface to control those parameters. You create this user interface by subclassing the <doc://com.apple.documentation/documentation/CoreAudioKit/AUViewController> class and implementing this protocol on your subclass.

If your audio unit doesn’t provide a custom user interface, subclass the <doc://com.apple.documentation/documentation/ObjectiveC/NSObject-swift.class> class instead. In this case, the hosting app must create a generic user interface for your audio unit.

## Topics

### Required Methods

[`-  createAudioUnitWithComponentDescription:error:`](/documentation/AudioToolbox/AUAudioUnitFactory/createAudioUnit(with:))

Creates an instance of an extension’s audio unit.

## Relationships

### Inherits From

[`NSExtensionRequestHandling`](/documentation/Foundation/NSExtensionRequestHandling)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)