<!--
{
  "documentType" : "article",
  "framework" : "CoreAudio",
  "identifier" : "/documentation/CoreAudio/core-audio-functions",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Core Audio Functions"
}
-->

# Core Audio Functions

## Topics

### Functions

[`func AudioConvertHostTimeToNanos(UInt64) -> UInt64`](/documentation/CoreAudio/AudioConvertHostTimeToNanos(_:))

[`func AudioConvertNanosToHostTime(UInt64) -> UInt64`](/documentation/CoreAudio/AudioConvertNanosToHostTime(_:))

[`func AudioDeviceCreateIOProcID(AudioObjectID, AudioDeviceIOProc, UnsafeMutableRawPointer?, UnsafeMutablePointer<AudioDeviceIOProcID?>) -> OSStatus`](/documentation/CoreAudio/AudioDeviceCreateIOProcID(_:_:_:_:))

[`func AudioDeviceCreateIOProcIDWithBlock(UnsafeMutablePointer<AudioDeviceIOProcID?>, AudioObjectID, dispatch_queue_t?, AudioDeviceIOBlock) -> OSStatus`](/documentation/CoreAudio/AudioDeviceCreateIOProcIDWithBlock(_:_:_:_:))

[`func AudioDeviceDestroyIOProcID(AudioObjectID, AudioDeviceIOProcID) -> OSStatus`](/documentation/CoreAudio/AudioDeviceDestroyIOProcID(_:_:))

[`func AudioDeviceGetCurrentTime(AudioObjectID, UnsafeMutablePointer<AudioTimeStamp>) -> OSStatus`](/documentation/CoreAudio/AudioDeviceGetCurrentTime(_:_:))

[`func AudioDeviceGetNearestStartTime(AudioObjectID, UnsafeMutablePointer<AudioTimeStamp>, UInt32) -> OSStatus`](/documentation/CoreAudio/AudioDeviceGetNearestStartTime(_:_:_:))

[`func AudioDeviceStart(AudioObjectID, AudioDeviceIOProcID?) -> OSStatus`](/documentation/CoreAudio/AudioDeviceStart(_:_:))

[`func AudioDeviceStartAtTime(AudioObjectID, AudioDeviceIOProcID?, UnsafeMutablePointer<AudioTimeStamp>, UInt32) -> OSStatus`](/documentation/CoreAudio/AudioDeviceStartAtTime(_:_:_:_:))

[`func AudioDeviceStop(AudioObjectID, AudioDeviceIOProcID?) -> OSStatus`](/documentation/CoreAudio/AudioDeviceStop(_:_:))

[`func AudioDeviceTranslateTime(AudioObjectID, UnsafePointer<AudioTimeStamp>, UnsafeMutablePointer<AudioTimeStamp>) -> OSStatus`](/documentation/CoreAudio/AudioDeviceTranslateTime(_:_:_:))

[`extern OSStatus AudioDriverPlugInClose(AudioDeviceID inDevice);`](/documentation/CoreAudio/AudioDriverPlugInClose)

[`extern OSStatus AudioDriverPlugInDeviceGetProperty(AudioDeviceID inDevice, UInt32 inChannel, Boolean isInput, AudioDevicePropertyID inPropertyID, UInt32 *ioPropertyDataSize, void *outPropertyData);`](/documentation/CoreAudio/AudioDriverPlugInDeviceGetProperty)

[`extern OSStatus AudioDriverPlugInDeviceGetPropertyInfo(AudioDeviceID inDevice, UInt32 inChannel, Boolean isInput, AudioDevicePropertyID inPropertyID, UInt32 *outSize, Boolean *outWritable);`](/documentation/CoreAudio/AudioDriverPlugInDeviceGetPropertyInfo)

[`extern OSStatus AudioDriverPlugInDeviceSetProperty(AudioDeviceID inDevice, const AudioTimeStamp *inWhen, UInt32 inChannel, Boolean isInput, AudioDevicePropertyID inPropertyID, UInt32 inPropertyDataSize, const void *inPropertyData);`](/documentation/CoreAudio/AudioDriverPlugInDeviceSetProperty)

[`extern OSStatus AudioDriverPlugInOpen(AudioDriverPlugInHostInfo *inHostInfo);`](/documentation/CoreAudio/AudioDriverPlugInOpen)

[`extern OSStatus AudioDriverPlugInStreamGetProperty(AudioDeviceID inDevice, io_object_t inIOAudioStream, UInt32 inChannel, AudioDevicePropertyID inPropertyID, UInt32 *ioPropertyDataSize, void *outPropertyData);`](/documentation/CoreAudio/AudioDriverPlugInStreamGetProperty)

[`extern OSStatus AudioDriverPlugInStreamGetPropertyInfo(AudioDeviceID inDevice, io_object_t inIOAudioStream, UInt32 inChannel, AudioDevicePropertyID inPropertyID, UInt32 *outSize, Boolean *outWritable);`](/documentation/CoreAudio/AudioDriverPlugInStreamGetPropertyInfo)

[`extern OSStatus AudioDriverPlugInStreamSetProperty(AudioDeviceID inDevice, io_object_t inIOAudioStream, const AudioTimeStamp *inWhen, UInt32 inChannel, AudioDevicePropertyID inPropertyID, UInt32 inPropertyDataSize, const void *inPropertyData);`](/documentation/CoreAudio/AudioDriverPlugInStreamSetProperty)

[`func AudioGetCurrentHostTime() -> UInt64`](/documentation/CoreAudio/AudioGetCurrentHostTime())

[`func AudioGetHostClockFrequency() -> Float64`](/documentation/CoreAudio/AudioGetHostClockFrequency())

[`func AudioGetHostClockMinimumTimeDelta() -> UInt32`](/documentation/CoreAudio/AudioGetHostClockMinimumTimeDelta())

[`func AudioHardwareCreateAggregateDevice(CFDictionary, UnsafeMutablePointer<AudioObjectID>) -> OSStatus`](/documentation/CoreAudio/AudioHardwareCreateAggregateDevice(_:_:))

[`func AudioHardwareDestroyAggregateDevice(AudioObjectID) -> OSStatus`](/documentation/CoreAudio/AudioHardwareDestroyAggregateDevice(_:))

[`func AudioHardwareUnload() -> OSStatus`](/documentation/CoreAudio/AudioHardwareUnload())

[`func AudioObjectAddPropertyListener(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>, AudioObjectPropertyListenerProc, UnsafeMutableRawPointer?) -> OSStatus`](/documentation/CoreAudio/AudioObjectAddPropertyListener(_:_:_:_:))

[`func AudioObjectAddPropertyListenerBlock(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>, dispatch_queue_t?, AudioObjectPropertyListenerBlock) -> OSStatus`](/documentation/CoreAudio/AudioObjectAddPropertyListenerBlock(_:_:_:_:))

[`func AudioObjectGetPropertyData(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>, UInt32, UnsafeRawPointer?, UnsafeMutablePointer<UInt32>, UnsafeMutableRawPointer) -> OSStatus`](/documentation/CoreAudio/AudioObjectGetPropertyData(_:_:_:_:_:_:))

[`func AudioObjectGetPropertyDataSize(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>, UInt32, UnsafeRawPointer?, UnsafeMutablePointer<UInt32>) -> OSStatus`](/documentation/CoreAudio/AudioObjectGetPropertyDataSize(_:_:_:_:_:))

[`func AudioObjectHasProperty(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>) -> Bool`](/documentation/CoreAudio/AudioObjectHasProperty(_:_:))

[`func AudioObjectIsPropertySettable(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>, UnsafeMutablePointer<DarwinBoolean>) -> OSStatus`](/documentation/CoreAudio/AudioObjectIsPropertySettable(_:_:_:))

[`func AudioObjectRemovePropertyListener(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>, AudioObjectPropertyListenerProc, UnsafeMutableRawPointer?) -> OSStatus`](/documentation/CoreAudio/AudioObjectRemovePropertyListener(_:_:_:_:))

[`func AudioObjectRemovePropertyListenerBlock(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>, dispatch_queue_t?, AudioObjectPropertyListenerBlock) -> OSStatus`](/documentation/CoreAudio/AudioObjectRemovePropertyListenerBlock(_:_:_:_:))

[`func AudioObjectSetPropertyData(AudioObjectID, UnsafePointer<AudioObjectPropertyAddress>, UInt32, UnsafeRawPointer?, UInt32, UnsafeRawPointer) -> OSStatus`](/documentation/CoreAudio/AudioObjectSetPropertyData(_:_:_:_:_:_:))

[`func AudioObjectShow(AudioObjectID)`](/documentation/CoreAudio/AudioObjectShow(_:))

[`func AudioHardwareCreateProcessTap(CATapDescription!, UnsafeMutablePointer<AudioObjectID>!) -> OSStatus`](/documentation/CoreAudio/AudioHardwareCreateProcessTap(_:_:))

[`func AudioHardwareDestroyProcessTap(AudioObjectID) -> OSStatus`](/documentation/CoreAudio/AudioHardwareDestroyProcessTap(_:))

[`func PropertyAddress(AudioObjectPropertySelector, scope: AudioObjectPropertyScope, element: AudioObjectPropertyElement) -> AudioObjectPropertyAddress`](/documentation/CoreAudio/PropertyAddress(_:scope:element:))

A helper constructor for the AudioObjectPropertyAddress struct.

### Deprecated Functions

[`extern OSStatus AudioDeviceAddIOProc(AudioDeviceID inDevice, AudioDeviceIOProc inProc, void *inClientData);`](/documentation/CoreAudio/AudioDeviceAddIOProc)

[`extern OSStatus AudioDeviceAddPropertyListener(AudioDeviceID inDevice, UInt32 inChannel, Boolean isInput, AudioDevicePropertyID inPropertyID, AudioDevicePropertyListenerProc inProc, void *inClientData);`](/documentation/CoreAudio/AudioDeviceAddPropertyListener)

[`extern OSStatus AudioDeviceGetProperty(AudioDeviceID inDevice, UInt32 inChannel, Boolean isInput, AudioDevicePropertyID inPropertyID, UInt32 *ioPropertyDataSize, void *outPropertyData);`](/documentation/CoreAudio/AudioDeviceGetProperty)

[`extern OSStatus AudioDeviceGetPropertyInfo(AudioDeviceID inDevice, UInt32 inChannel, Boolean isInput, AudioDevicePropertyID inPropertyID, UInt32 *outSize, Boolean *outWritable);`](/documentation/CoreAudio/AudioDeviceGetPropertyInfo)

[`extern OSStatus AudioDeviceRead(AudioDeviceID inDevice, const AudioTimeStamp *inStartTime, AudioBufferList *outData);`](/documentation/CoreAudio/AudioDeviceRead)

[`extern OSStatus AudioDeviceRemoveIOProc(AudioDeviceID inDevice, AudioDeviceIOProc inProc);`](/documentation/CoreAudio/AudioDeviceRemoveIOProc)

[`extern OSStatus AudioDeviceRemovePropertyListener(AudioDeviceID inDevice, UInt32 inChannel, Boolean isInput, AudioDevicePropertyID inPropertyID, AudioDevicePropertyListenerProc inProc);`](/documentation/CoreAudio/AudioDeviceRemovePropertyListener)

[`extern OSStatus AudioDeviceSetProperty(AudioDeviceID inDevice, const AudioTimeStamp *inWhen, UInt32 inChannel, Boolean isInput, AudioDevicePropertyID inPropertyID, UInt32 inPropertyDataSize, const void *inPropertyData);`](/documentation/CoreAudio/AudioDeviceSetProperty)

[`extern OSStatus AudioHardwareAddPropertyListener(AudioHardwarePropertyID inPropertyID, AudioHardwarePropertyListenerProc inProc, void *inClientData);`](/documentation/CoreAudio/AudioHardwareAddPropertyListener)

[`extern OSStatus AudioHardwareAddRunLoopSource(CFRunLoopSourceRef inRunLoopSource);`](/documentation/CoreAudio/AudioHardwareAddRunLoopSource)

[`extern OSStatus AudioHardwareGetProperty(AudioHardwarePropertyID inPropertyID, UInt32 *ioPropertyDataSize, void *outPropertyData);`](/documentation/CoreAudio/AudioHardwareGetProperty)

[`extern OSStatus AudioHardwareGetPropertyInfo(AudioHardwarePropertyID inPropertyID, UInt32 *outSize, Boolean *outWritable);`](/documentation/CoreAudio/AudioHardwareGetPropertyInfo)

[`extern OSStatus AudioHardwareRemovePropertyListener(AudioHardwarePropertyID inPropertyID, AudioHardwarePropertyListenerProc inProc);`](/documentation/CoreAudio/AudioHardwareRemovePropertyListener)

[`extern OSStatus AudioHardwareRemoveRunLoopSource(CFRunLoopSourceRef inRunLoopSource);`](/documentation/CoreAudio/AudioHardwareRemoveRunLoopSource)

[`extern OSStatus AudioHardwareSetProperty(AudioHardwarePropertyID inPropertyID, UInt32 inPropertyDataSize, const void *inPropertyData);`](/documentation/CoreAudio/AudioHardwareSetProperty)

[`extern OSStatus AudioStreamAddPropertyListener(AudioStreamID inStream, UInt32 inChannel, AudioDevicePropertyID inPropertyID, AudioStreamPropertyListenerProc inProc, void *inClientData);`](/documentation/CoreAudio/AudioStreamAddPropertyListener)

[`extern OSStatus AudioStreamGetProperty(AudioStreamID inStream, UInt32 inChannel, AudioDevicePropertyID inPropertyID, UInt32 *ioPropertyDataSize, void *outPropertyData);`](/documentation/CoreAudio/AudioStreamGetProperty)

[`extern OSStatus AudioStreamGetPropertyInfo(AudioStreamID inStream, UInt32 inChannel, AudioDevicePropertyID inPropertyID, UInt32 *outSize, Boolean *outWritable);`](/documentation/CoreAudio/AudioStreamGetPropertyInfo)

[`extern OSStatus AudioStreamRemovePropertyListener(AudioStreamID inStream, UInt32 inChannel, AudioDevicePropertyID inPropertyID, AudioStreamPropertyListenerProc inProc);`](/documentation/CoreAudio/AudioStreamRemovePropertyListener)

[`extern OSStatus AudioStreamSetProperty(AudioStreamID inStream, const AudioTimeStamp *inWhen, UInt32 inChannel, AudioDevicePropertyID inPropertyID, UInt32 inPropertyDataSize, const void *inPropertyData);`](/documentation/CoreAudio/AudioStreamSetProperty)



---

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)