<!--
{
  "availability" : [
    "macCatalyst: -",
    "macOS: 15.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreAudio",
  "identifier" : "/documentation/CoreAudio/AudioHardwareObject",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Core Audio"
    ],
    "preciseIdentifier" : "s:9CoreAudio0B14HardwareObjectC"
  },
  "title" : "AudioHardwareObject"
}
-->

# AudioHardwareObject

The audio HAL provides an abstraction through which applications can access audio hardware. To
do this, the HAL provides a small set of audio objects that provide access to the various pieces
of the system. Audio objects all have a set of properties that describe and manipulate their state.
AudioHardwareObject is a base class for all other audio objects. As such, all classes inherit this
set of properties.

```
class AudioHardwareObject
```

## Topics

### Initializers

[`init(id: AudioObjectID)`](/documentation/CoreAudio/AudioHardwareObject/init(id:))

### Instance Properties

[`var baseClassID: AudioClassID`](/documentation/CoreAudio/AudioHardwareObject/baseClassID)

An AudioClassID that identifies the class from which the class of the
AudioObject is derived. This value must always be one of the standard
classes.

[`var classID: AudioClassID`](/documentation/CoreAudio/AudioHardwareObject/classID)

An AudioClassID that identifies the class of the AudioObject.

[`var creatorBundleID: String`](/documentation/CoreAudio/AudioHardwareObject/creatorBundleID)

A String that contains the bundle ID of the plug-in that instantiated the object.

[`var delegates: [any PropertyListenerDelegate]`](/documentation/CoreAudio/AudioHardwareObject/delegates)

An array of PropertyListenerDelegates used to notify property changes.

[`var firmwareVersion: String`](/documentation/CoreAudio/AudioHardwareObject/firmwareVersion)

A String that contains the human readable firmware version for the object.

[`let id: AudioObjectID`](/documentation/CoreAudio/AudioHardwareObject/id)

A UInt32 that provides a handle on a specific AudioObject.

[`var isIdentifying: Bool`](/documentation/CoreAudio/AudioHardwareObject/isIdentifying)

A Bool where a value of true indicates that the object’s hardware is
drawing attention to itself, typically by flashing or lighting up its front
panel display. A value of false indicates that this function is turned off. This
makes it easy for a user to associate the physical hardware with its
representation in an application. Typically, this property is only supported
by AudioHardwareDevices and AudioHardwareBoxes.

[`var manufacturer: String`](/documentation/CoreAudio/AudioHardwareObject/manufacturer)

A String that contains the human readable name of the manufacturer of the
hardware the object is a part of.

[`var modelName: String`](/documentation/CoreAudio/AudioHardwareObject/modelName)

A String that contains the human readable model name of the object. The
model name differs from name in that two objects of the same model will
have the same value for this property but may have different values for name.

[`var name: String`](/documentation/CoreAudio/AudioHardwareObject/name)

A String that contains the human readable name of the object.

[`var ownedObjects: [AudioHardwareObject]`](/documentation/CoreAudio/AudioHardwareObject/ownedObjects)

An array of AudioHardwareObjects that represent all the objects owned by this object.

[`var owner: AudioHardwareObject?`](/documentation/CoreAudio/AudioHardwareObject/owner)

An AudioHardwareObject that identifies this object’s owner. Note that all AudioHardwareObject
are owned by some other AudioHardwareObject. The only exception is the AudioSystemObject,
for which the value of this property is nil.

[`var serialNumber: String`](/documentation/CoreAudio/AudioHardwareObject/serialNumber)

A String that contains the human readable serial number for the object.

### Instance Methods

[`func addListener(forProperties: [AudioObjectPropertyAddress], dispatchQueue: dispatch_queue_t?) throws`](/documentation/CoreAudio/AudioHardwareObject/addListener(forProperties:dispatchQueue:))

Registers for notifications to be received on the property listener delegates when the
given properties change.

[`func hasProperty(address: AudioObjectPropertyAddress) -> Bool`](/documentation/CoreAudio/AudioHardwareObject/hasProperty(address:))

Queries an AudioHardwareObject about whether or not it has the given property.

[`func isPropertySettable(address: AudioObjectPropertyAddress) throws -> Bool`](/documentation/CoreAudio/AudioHardwareObject/isPropertySettable(address:))

Queries an AudioHardwareObject about whether or not the given property can be set using setPropertyValue.

[`func propertyData(address: AudioObjectPropertyAddress, qualifier: Data?) throws -> Data`](/documentation/CoreAudio/AudioHardwareObject/propertyData(address:qualifier:))

Queries an AudioHardwareObject to get the data of the given property.

[`func propertyDataSize(address: AudioObjectPropertyAddress, qualifier: Data?) throws -> Int`](/documentation/CoreAudio/AudioHardwareObject/propertyDataSize(address:qualifier:))

Queries an AudioHardwareObject to find the size of the data for the given property.

[`func removeListener(forProperties: [AudioObjectPropertyAddress], dispatchQueue: dispatch_queue_t?) throws`](/documentation/CoreAudio/AudioHardwareObject/removeListener(forProperties:dispatchQueue:))

Unregisters for receiving notifications when the given properties change.

[`func setCreatorBundleID(String) throws`](/documentation/CoreAudio/AudioHardwareObject/setCreatorBundleID(_:))

Set the creatorBundleID property.

[`func setIsIdentifying(Bool) throws`](/documentation/CoreAudio/AudioHardwareObject/setIsIdentifying(_:))

Set the isIdentifying property.

[`func setName(String) throws`](/documentation/CoreAudio/AudioHardwareObject/setName(_:))

Set the name property.

[`func setPropertyData(address: AudioObjectPropertyAddress, qualifier: Data?, data: Data) throws`](/documentation/CoreAudio/AudioHardwareObject/setPropertyData(address:qualifier:data:)-4kzgv)

Tells an AudioObject to change the value of the given property using the  provided data.

[`func setPropertyData(address: AudioObjectPropertyAddress, qualifier: Data?, data: inout Data) async throws`](/documentation/CoreAudio/AudioHardwareObject/setPropertyData(address:qualifier:data:)-7cfn)

Tells an AudioObject to change the value of the given property using the  provided data.

## Relationships

### Inherited By

[`AudioHardwareTap`](/documentation/CoreAudio/AudioHardwareTap)

[`AudioHardwareControl`](/documentation/CoreAudio/AudioHardwareControl)

[`AudioHardwareBox`](/documentation/CoreAudio/AudioHardwareBox)

[`AudioHardwarePlugin`](/documentation/CoreAudio/AudioHardwarePlugin)

[`AudioHardwareClock`](/documentation/CoreAudio/AudioHardwareClock)

[`AudioHardwareProcess`](/documentation/CoreAudio/AudioHardwareProcess)

[`AudioHardwareStream`](/documentation/CoreAudio/AudioHardwareStream)

[`AudioHardwareSystem`](/documentation/CoreAudio/AudioHardwareSystem)

### Conforms To

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

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

---

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)