---
title: AUAudioUnitBusArray
framework: audiotoolbox
role: symbol
role_heading: Class
path: audiotoolbox/auaudiounitbusarray
---

# AUAudioUnitBusArray

A class that defines a container for an audio unit’s input or output busses.

## Declaration

```swift
class AUAudioUnitBusArray
```

## Overview

Overview Hosts can observe a bus property across all busses by using KVO on a bus array object, without having to observe it on each individual bus. Some audio units (e.g. mixers) support variable numbers of busses, via subclassing. When the bus count changes, a KVO notification is sent on the audio unit’s inputBusses or outputBusses property, as appropriate. This version 3 class is bridged to the version 2 kAudioUnitProperty_ElementCount API. note: You could add listeners to individual busses, but that means you have to observe bus count changes and add or remove listeners in response. Furthermore, the addObserver(_:toObjectsAt:forKeyPath:options:context:) method is problematic; it does not let the individual objects override the observation request, and so a bus which is proxying a bus in an extension process does not get the message.

## Topics

### Initialization

- [init(audioUnit:busType:)](audiotoolbox/auaudiounitbusarray/init(audiounit:bustype:).md)
- [init(audioUnit:busType:busses:)](audiotoolbox/auaudiounitbusarray/init(audiounit:bustype:busses:).md)

### Bus Array Methods and Properties

- [count](audiotoolbox/auaudiounitbusarray/count.md)
- [isCountChangeable](audiotoolbox/auaudiounitbusarray/iscountchangeable.md)
- [ownerAudioUnit](audiotoolbox/auaudiounitbusarray/owneraudiounit.md)
- [busType](audiotoolbox/auaudiounitbusarray/bustype.md)
- [subscript(_:)](audiotoolbox/auaudiounitbusarray/subscript(_:).md)
- [setBusCount(_:)](audiotoolbox/auaudiounitbusarray/setbuscount(_:).md)
- [addObserver(toAllBusses:forKeyPath:options:context:)](audiotoolbox/auaudiounitbusarray/addobserver(toallbusses:forkeypath:options:context:).md)
- [removeObserver(fromAllBusses:forKeyPath:context:)](audiotoolbox/auaudiounitbusarray/removeobserver(fromallbusses:forkeypath:context:).md)

### Audio Unit Implementations

- [replaceBusses(_:)](audiotoolbox/auaudiounitbusarray/replacebusses(_:).md)

## Relationships

### Inherits From

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

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSFastEnumeration](foundation/nsfastenumeration.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)
- [AUAudioUnit](audiotoolbox/auaudiounit.md)
- [AUAudioUnitBus](audiotoolbox/auaudiounitbus.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)
