<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.10.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AVFAudio",
  "identifier" : "/documentation/AVFAudio/AVAudioNode",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AVFAudio"
    ],
    "preciseIdentifier" : "c:objc(cs)AVAudioNode"
  },
  "title" : "AVAudioNode"
}
-->

# AVAudioNode

An object you use for audio generation, processing, or an I/O block.

```
class AVAudioNode
```

## Overview

An [`AVAudioEngine`](/documentation/AVFAudio/AVAudioEngine) object contains instances of audio nodes that you attach, and this base class provides common functionality. Instances of this class don’t provide useful functionality until you attach them to an engine.

Nodes have input and output busses that serve as connection points. For example, an effect has one input bus and one output bus, and a mixer has multiple input busses and one output bus.

A bus contains a format the framework expresses in terms of sample rate and channel count. Formats must match exactly when making connections between nodes, excluding [`AVAudioMixerNode`](/documentation/AVFAudio/AVAudioMixerNode) and [`AVAudioOutputNode`](/documentation/AVFAudio/AVAudioOutputNode).

## Topics

### Inspecting input buses

[`typealias AVAudioNodeBus`](/documentation/AVFAudio/AVAudioNodeBus)

The index of a bus on an audio node.

[`func inputFormat(forBus: AVAudioNodeBus) -> AVAudioFormat`](/documentation/AVFAudio/AVAudioNode/inputFormat(forBus:))

Gets the input format for the bus you specify.

[`func name(forInputBus: AVAudioNodeBus) -> String?`](/documentation/AVFAudio/AVAudioNode/name(forInputBus:))

Gets the name of the input bus you specify.

[`var numberOfInputs: Int`](/documentation/AVFAudio/AVAudioNode/numberOfInputs)

The number of input busses for the node.

### Inspecting output buses

[`func outputFormat(forBus: AVAudioNodeBus) -> AVAudioFormat`](/documentation/AVFAudio/AVAudioNode/outputFormat(forBus:))

Retrieves the output format for the bus you specify.

[`func name(forOutputBus: AVAudioNodeBus) -> String?`](/documentation/AVFAudio/AVAudioNode/name(forOutputBus:))

Retrieves the name of the output bus you specify.

[`var numberOfOutputs: Int`](/documentation/AVFAudio/AVAudioNode/numberOfOutputs)

The number of output busses for the node.

### Managing audio taps

[`func installAudioTap(onBus: AVAudioNodeBus, bufferSize: AVAudioFrameCount, format: AVAudioFormat?, tapProvider: (AVReadOnlyAudioPCMBuffer, AVAudioTime) -> Void) throws`](/documentation/AVFAudio/AVAudioNode/installAudioTap(onBus:bufferSize:format:tapProvider:))

Install a tap on a bus using a sendable block

[`func installTap(onBus: AVAudioNodeBus, bufferSize: AVAudioFrameCount, format: AVAudioFormat?, block: AVAudioNodeTapBlock)`](/documentation/AVFAudio/AVAudioNode/installTap(onBus:bufferSize:format:block:))

Installs an audio tap on a bus you specify to record, monitor, and observe the output of the node.

[`- (BOOL) installTapOnBus:(AVAudioNodeBus) bus bufferSize:(AVAudioFrameCount) bufferSize format:(AVAudioFormat *) format error:(NSError **) outError block:(AVAudioNodeTapBlock) tapBlock;`](/documentation/AVFAudio/AVAudioNode/installTapOnBus:bufferSize:format:error:block:)

[`func removeTap(onBus: AVAudioNodeBus)`](/documentation/AVFAudio/AVAudioNode/removeTap(onBus:))

Removes an audio tap on a bus you specify.

[`typealias AVAudioNodeTapBlock`](/documentation/AVFAudio/AVAudioNodeTapBlock)

The block that receives copies of the output of an audio node.

### Getting the owning engine

[`var engine: AVAudioEngine?`](/documentation/AVFAudio/AVAudioNode/engine)

The audio engine that manages the node, if any.

### Getting the last render time

[`var lastRenderTime: AVAudioTime?`](/documentation/AVFAudio/AVAudioNode/lastRenderTime)

The most recent render time.

### Getting audio node properties

[`func withAUAudioUnit<R, E>((borrowing AUAudioUnit) throws(E) -> R) throws(E) -> R`](/documentation/AVFAudio/AVAudioNode/withAUAudioUnit(_:))

Provides scoped access to the node’s AUAudioUnit

[`var auAudioUnit: AUAudioUnit`](/documentation/AVFAudio/AVAudioNode/auAudioUnit-1gu8g)

An audio unit object that wraps or underlies the implementation’s audio unit.

[`@property (nonatomic, readonly) AUAudioUnit * AUAudioUnit;`](/documentation/AVFAudio/AVAudioNode/AUAudioUnit-1kkjr)

[`var latency: TimeInterval`](/documentation/AVFAudio/AVAudioNode/latency)

The processing latency of the node, in seconds.

[`var outputPresentationLatency: TimeInterval`](/documentation/AVFAudio/AVAudioNode/outputPresentationLatency)

The maximum render pipeline latency downstream of the node, in seconds.

### Resetting the audio node

[`func reset()`](/documentation/AVFAudio/AVAudioNode/reset())

Clears a unit’s previous processing state.

## Relationships

### Inherited By

[`AVAudioUnit`](/documentation/AVFAudio/AVAudioUnit)

[`AVAudioEnvironmentNode`](/documentation/AVFAudio/AVAudioEnvironmentNode)

[`AVAudioPlayerNode`](/documentation/AVFAudio/AVAudioPlayerNode)

[`AVAudioMixerNode`](/documentation/AVFAudio/AVAudioMixerNode)

[`AVAudioSinkNode`](/documentation/AVFAudio/AVAudioSinkNode)

[`AVAudioSourceNode`](/documentation/AVFAudio/AVAudioSourceNode)

[`AVAudioIONode`](/documentation/AVFAudio/AVAudioIONode)

### Conforms To

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

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

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

[`Sendable`](/documentation/Swift/Sendable)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Hashable`](/documentation/Swift/Hashable)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)