Skip to content

AVFAudio macOS xcode27.0 b1

Alex Soto edited this page Jun 9, 2026 · 1 revision

#AVFAudio.framework

diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioConnectionPoint.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioConnectionPoint.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioConnectionPoint.h	2026-04-18 23:16:03
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioConnectionPoint.h	2026-05-22 08:28:50
@@ -19,7 +19,7 @@
 	
 		Instances of this class are immutable.
 */
-API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0))
 @interface AVAudioConnectionPoint : NSObject {
 @private
 	AVAudioNode *_node;
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioConverter.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioConverter.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioConverter.h	2026-04-18 21:41:01
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioConverter.h	2026-05-22 08:25:33
@@ -151,14 +151,13 @@
 		convertToBuffer:error:withInputFromBlock: will return as much output as could be converted
 		with the input already supplied.
 */
-typedef AVAudioBuffer * __nullable (^ NS_SWIFT_SENDABLE AVAudioConverterInputBlock)(AVAudioPacketCount inNumberOfPackets, AVAudioConverterInputStatus* outStatus);
+typedef AVAudioBuffer * __nullable (^ NS_SWIFT_NONSENDABLE AVAudioConverterInputBlock)(AVAudioPacketCount inNumberOfPackets, AVAudioConverterInputStatus* outStatus);
 
 /*!
 	@class AVAudioConverter
 	@abstract
 		Converts streams of audio between various formats.
 */
-NS_SWIFT_SENDABLE
 API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0))
 @interface AVAudioConverter : NSObject {
 @private
@@ -301,7 +300,7 @@
 		It attempts to fill the buffer to its capacity. On return, the buffer's length indicates the number of 
 		sample frames successfully converted.
 */
-- (AVAudioConverterOutputStatus)convertToBuffer:(AVAudioBuffer *)outputBuffer error:(NSError **)outError withInputFromBlock:(AVAudioConverterInputBlock)inputBlock;
+- (AVAudioConverterOutputStatus)convertToBuffer:(AVAudioBuffer *)outputBuffer error:(NSError **)outError withInputFromBlock:(NS_NOESCAPE AVAudioConverterInputBlock)inputBlock;
 
 @end
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioEngine.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioEngine.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioEngine.h	2026-04-18 19:16:24
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioEngine.h	2026-05-22 05:24:21
@@ -135,9 +135,21 @@
 	In such a case, the client could implement their own synchronization between their realtime
 	and non-realtime threads and retry calling `AVAudioEngineManualRenderingBlock`.
 */
-typedef AVAudioEngineManualRenderingStatus (^AVAudioEngineManualRenderingBlock)(AVAudioFrameCount numberOfFrames, AudioBufferList *outBuffer, OSStatus * __nullable outError) API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
+typedef AVAudioEngineManualRenderingStatus (^ NS_SWIFT_NONSENDABLE AVAudioEngineManualRenderingBlock)(AVAudioFrameCount numberOfFrames, AudioBufferList *outBuffer, OSStatus * __nullable outError) API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
 
 /*!
+	@typedef		AVMIDIEventListBlock
+	@abstract		A block used by an audio unit to send or receive MIDIEventList data.
+	@param eventSampleTime
+					The time in samples at which the MIDI events are to occur.
+	@param cable
+					The virtual cable number associated with this MIDI data.
+	@param eventList
+					One full MIDI, partial MIDI SysEx, or a full SysEx UMP message.
+*/
+typedef OSStatus (^ NS_SWIFT_NONSENDABLE AVMIDIEventListBlock)(SInt64 eventSampleTime, UInt8 cable, const struct MIDIEventList* eventList) CA_REALTIME_API API_AVAILABLE(macos(27.0), ios(27.0), tvos(27.0), watchos(27.0));
+
+/*!
 	@class AVAudioEngine
 
 	An AVAudioEngine contains a group of connected AVAudioNodes ("nodes"), each of which performs
@@ -157,7 +169,7 @@
 	audio device and rendering in response to requests from the client, normally at or
 	faster than realtime rate.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioEngine : NSObject {
 @private
 	void *_impl;
@@ -227,8 +239,37 @@
 	Note that any pre-existing connection(s) involving the source's output bus or the
 	destination's input bus will be broken.
 */
-- (void)connect:(AVAudioNode *)node1 to:(AVAudioNode *)node2 fromBus:(AVAudioNodeBus)bus1 toBus:(AVAudioNodeBus)bus2 format:(AVAudioFormat * __nullable)format;
+- (void)connect:(AVAudioNode *)node1 to:(AVAudioNode *)node2 fromBus:(AVAudioNodeBus)bus1 toBus:(AVAudioNodeBus)bus2 format:(AVAudioFormat * __nullable)format API_DEPRECATED_WITH_REPLACEMENT("connect:to:fromBus:toBus:format:error:", ios(8.0, 27.0), watchos(2.0, 27.0), macos(10.10, 27.0), tvos(9.0, 27.0));
 
+/*! @method connect:to:fromBus:toBus:format:error
+	@abstract
+		Establish a connection between two nodes.
+	@param node1
+		The source node
+	@param node2
+		The destination node
+	@param bus1
+		The output bus on the source node
+	@param bus2
+		The input bus on the destination node
+	@param format
+		If non-nil, the format of the source node's output bus is set to this
+		format. In all cases, the format of the destination node's input bus is set to
+		match that of the source node's output bus.
+	@param error
+		on exit, if an error occurs, a description of the error
+	@return
+		YES for success
+
+	Nodes have input and output buses (AVAudioNodeBus). Use this method to establish
+	one-to-one connections betweeen nodes. Connections made using this method are always
+	one-to-one, never one-to-many or many-to-one.
+
+	Note that any pre-existing connection(s) involving the source's output bus or the
+	destination's input bus will be broken.
+*/
+- (BOOL)connect:(AVAudioNode *)node1 to:(AVAudioNode *)node2 fromBus:(AVAudioNodeBus)bus1 toBus:(AVAudioNodeBus)bus2 format:(AVAudioFormat * __nullable)format error:(NSError**)error NS_SWIFT_NAME(connectNode(_:to:fromBus:toBus:format:)) API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0));
+
 /*!	@method connect:to:format:
 	@abstract
 		Establish a connection between two nodes
@@ -237,8 +278,22 @@
 	and bus 0 on the destination node, except in the case of a destination which is a mixer,
 	in which case the destination is the mixer's nextAvailableInputBus.
 */
-- (void)connect:(AVAudioNode *)node1 to:(AVAudioNode *)node2 format:(AVAudioFormat * __nullable)format;
+- (void)connect:(AVAudioNode *)node1 to:(AVAudioNode *)node2 format:(AVAudioFormat * __nullable)format API_DEPRECATED_WITH_REPLACEMENT("connect:to:format:error:", ios(8.0, 27.0), watchos(2.0, 27.0), macos(10.10, 27.0), tvos(9.0, 27.0));
 
+/*!	@method connect:to:format:error:
+	@abstract
+		Establish a connection between two nodes
+	@param error
+		on exit, if an error occurs, a description of the error
+	@return
+		YES for success
+
+	This calls connect:to:fromBus:toBus:format: using bus 0 on the source node,
+	and bus 0 on the destination node, except in the case of a destination which is a mixer,
+	in which case the destination is the mixer's nextAvailableInputBus.
+*/
+- (BOOL)connect:(AVAudioNode *)node1 to:(AVAudioNode *)node2 format:(AVAudioFormat * __nullable)format error:(NSError**)error NS_SWIFT_NAME(connectNode(_:to:format:)) API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0));
+
 /*! @method connect:toConnectionPoints:fromBus:format:
 	@abstract
 		Establish connections between a source node and multiple destination nodes.
@@ -274,8 +329,49 @@
 		- any AVAudioUnitTimeEffect
 		- any sample rate conversion
 */
-- (void)connect:(AVAudioNode *)sourceNode toConnectionPoints:(NSArray<AVAudioConnectionPoint *> *)destNodes fromBus:(AVAudioNodeBus)sourceBus format:(AVAudioFormat * __nullable)format API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0));
+- (void)connect:(AVAudioNode *)sourceNode toConnectionPoints:(NSArray<AVAudioConnectionPoint *> *)destNodes fromBus:(AVAudioNodeBus)sourceBus format:(AVAudioFormat * __nullable)format API_DEPRECATED_WITH_REPLACEMENT("connect:toConnectionPoints:fromBus:format:error:", ios(9.0, 27.0), watchos(2.0, 27.0), macos(10.11, 27.0), tvos(9.0, 27.0));
 
+/*! @method connect:toConnectionPoints:fromBus:format:error:
+	@abstract
+		Establish connections between a source node and multiple destination nodes.
+	@param sourceNode
+		The source node
+	@param destNodes
+		An array of AVAudioConnectionPoint objects specifying destination
+		nodes and busses
+	@param sourceBus
+		The output bus on source node
+	@param format
+		If non-nil, the format of the source node's output bus is set to this
+		format. In all cases, the format of the destination nodes' input bus is set to
+		match that of the source node's output bus
+	@param error
+		on exit, if an error occurs, a description of the error
+	@return
+		YES for success
+
+	Use this method to establish connections from a source node to multiple destination nodes.
+	Connections made using this method are either one-to-one (when a single destination
+	connection is specified) or one-to-many (when multiple connections are specified), but
+	never many-to-one.
+
+	To incrementally add a new connection to a source node, use this method with an array
+	of AVAudioConnectionPoint objects comprising of pre-existing connections (obtained from
+	`outputConnectionPointsForNode:outputBus:`) and the new connection.
+
+	Note that any pre-existing connection involving the destination's input bus will be
+	broken. And, any pre-existing connection on source node which is not a part of the
+	specified destination connection array will also be broken.
+
+	Also note that when the output of a node is split into multiple paths, all the paths
+	must render at the same rate until they reach a common mixer.
+	In other words, starting from the split node until the common mixer node where all split
+	paths terminate, you cannot have:
+		- any AVAudioUnitTimeEffect
+		- any sample rate conversion
+*/
+- (BOOL)connect:(AVAudioNode *)sourceNode toConnectionPoints:(NSArray<AVAudioConnectionPoint *> *)destNodes fromBus:(AVAudioNodeBus)sourceBus format:(AVAudioFormat * __nullable)format error:(NSError**)error NS_SWIFT_NAME(connectNode(_:to:fromBus:format:)) API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0));
+
 /*! @method disconnectNodeInput:bus:
 	@abstract
 		Remove a connection between two nodes.
@@ -424,7 +520,7 @@
 	@abstract
 		The MusicSequence previously attached to the engine (if any).
  */
-@property (nonatomic, nullable) MusicSequence musicSequence;
+@property (nonatomic, nullable) MusicSequence musicSequence NS_REFINED_FOR_SWIFT;
 #endif
 
 /*! @property outputNode
@@ -748,8 +844,41 @@
     Any client installed block on the source node's audio unit `AUMIDIOutputEventListBlock`
     will be overwritten when making the MIDI connection.
  */
-- (void)connectMIDI:(AVAudioNode *)sourceNode to:(AVAudioNode *)destinationNode format:(AVAudioFormat * __nullable)format eventListBlock:(AUMIDIEventListBlock __nullable)tapBlock API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0));
+- (void)connectMIDI:(AVAudioNode *)sourceNode to:(AVAudioNode *)destinationNode format:(AVAudioFormat * __nullable)format eventListBlock:(AUMIDIEventListBlock __nullable)tapBlock __attribute__((swift_attr("@_disfavoredOverload"))) API_DEPRECATED_WITH_REPLACEMENT("connectMIDI:to:format:eventListProvider:", macos(13.0, 27.0), ios(16.0, 27.0), watchos(9.0, 27.0), tvos(16.0, 27.0));
 
+/*! @method connectMIDI:to:format:eventListProvider:
+	@abstract
+		Establish a MIDI only connection between two nodes.
+	@param sourceNode
+		The source node.
+	@param destinationNode
+		The destination node.
+	@param format
+		If non-nil, the format of the source node's output bus is set to this format.
+		In all cases, the format of the source nodes' output bus has to match with the
+		destination nodes' output bus format.
+		Although the output bus of the source is not in use, the format needs to be set
+		in order to be able to use the sample rate for MIDI event timing calculations.
+	@param tapBlock
+		This block is called from the source node's `AUMIDIOutputEventListBlock`
+		on the realtime thread. The host can tap the MIDI data of the source node through
+		this block.
+
+	Use this method to establish a MIDI only connection between a source node and a
+	destination node that has MIDI input capability.
+
+	The source node can only be a AVAudioUnit node of type `kAudioUnitType_MIDIProcessor`.
+	The destination node types can be `kAudioUnitType_MusicDevice`,
+	`kAudioUnitType_MusicEffect` or `kAudioUnitType_MIDIProcessor`.
+
+	Note that any pre-existing MIDI connection involving the destination will be broken.
+
+	Any client installed block on the source node's audio unit `AUMIDIOutputEventListBlock`
+	will be overwritten when making the MIDI connection.
+ */
+
+- (void)connectMIDI:(AVAudioNode *)sourceNode to:(AVAudioNode *)destinationNode format:(AVAudioFormat * __nullable)format eventListProvider:(AVMIDIEventListBlock __nullable)tapBlock API_AVAILABLE(macos(27.0), ios(27.0), tvos(27.0), watchos(27.0));
+
 /*! @method connectMIDI:toNodes:format:block:
     @abstract
         Establish a MIDI only connection between a source node and multiple destination nodes.
@@ -820,7 +949,43 @@
     Any client installed block on the source node's audio unit `AUMIDIOutputEventListBlock`
     will be overwritten when making the MIDI connection.
  */
-- (void)connectMIDI:(AVAudioNode *)sourceNode toNodes:(NSArray<AVAudioNode *> *)destinationNodes format:(AVAudioFormat * __nullable)format eventListBlock:(AUMIDIEventListBlock __nullable)tapBlock API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0), watchos(9.0));
+- (void)connectMIDI:(AVAudioNode *)sourceNode toNodes:(NSArray<AVAudioNode *> *)destinationNodes format:(AVAudioFormat * __nullable)format eventListBlock:(AUMIDIEventListBlock __nullable)tapBlock __attribute__((swift_attr("@_disfavoredOverload"))) API_DEPRECATED_WITH_REPLACEMENT("connectMIDI:toNodes:format:eventListProvider:", macos(13.0, 27.0), ios(16.0, 27.0), watchos(9.0, 27.0), tvos(16.0, 27.0));
+
+/*! @method connectMIDI:toNodes:format:eventListProvider:
+	@abstract
+		Establish a MIDI only connection between a source node and multiple destination nodes.
+	@param sourceNode
+		The source node.
+	@param destinationNodes
+		An array of AVAudioNodes specifying destination nodes.
+	@param format
+		If non-nil, the format of the source node's output bus is set to this format.
+		In all cases, the format of the source nodes' output bus has to match with the
+		destination nodes' output bus format.
+		Although the output bus of the source is not in use, the format needs to be set
+		in order to be able to use the sample rate for MIDI event timing calculations.
+	@param tapBlock
+		This block is called from the source node's `AUMIDIOutputEventListBlock`
+		on the realtime thread. The host can tap the MIDI data of the source node through
+		this block.
+
+	Use this method to establish a MIDI only connection between a source node and
+	multiple destination nodes.
+
+	The source node can only be a AVAudioUnit node of type `kAudioUnitType_MIDIProcessor`.
+	The destination node types can be `kAudioUnitType_MusicDevice`,
+	`kAudioUnitType_MusicEffect` or `kAudioUnitType_MIDIProcessor`.
+
+	MIDI connections made using this method are either one-to-one (when a single
+	destination connection is specified) or one-to-many (when multiple connections are
+	specified), but never many-to-one.
+
+	Note that any pre-existing connection involving the destination will be broken.
+
+	Any client installed block on the source node's audio unit `AUMIDIOutputEventListBlock`
+	will be overwritten when making the MIDI connection.
+ */
+- (void)connectMIDI:(AVAudioNode *)sourceNode toNodes:(NSArray<AVAudioNode *> *)destinationNodes format:(AVAudioFormat * __nullable)format eventListProvider:(AVMIDIEventListBlock __nullable)tapBlock API_AVAILABLE(macos(27.0), ios(27.0), tvos(27.0), watchos(27.0));
 
 /*! @method disconnectMIDI:from:
     @abstract
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioEnvironmentNode.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioEnvironmentNode.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioEnvironmentNode.h	2026-04-18 22:05:10
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioEnvironmentNode.h	2026-05-23 02:50:53
@@ -50,7 +50,7 @@
         A standalone instance of AVAudioEnvironmentDistanceAttenuationParameters cannot be created. 
         Only an instance vended out by a source object (e.g. AVAudioEnvironmentNode) can be used.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioEnvironmentDistanceAttenuationParameters : NSObject {
 @private
 	void *_impl;
@@ -113,7 +113,7 @@
         Only an instance vended out by a source object (e.g. AVAudioEnvironmentNode) can be used.
 */
 
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioEnvironmentReverbParameters : NSObject {
 @private
 	void *_impl;
@@ -205,7 +205,7 @@
         with a desired AudioChannelLayout.
 */
 
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
 @interface AVAudioEnvironmentNode : AVAudioNode <AVAudioMixing>
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioFile.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioFile.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioFile.h	2026-04-18 21:41:01
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioFile.h	2026-05-22 08:25:33
@@ -25,7 +25,7 @@
 		Reads and writes are always sequential, but random access is possible by setting the
 		framePosition property.
 */
-NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioFile : NSObject
 - (instancetype)init API_DEPRECATED("Deprecated - use initForReading or initForWriting", macos(10.10, 26.0), ios(8.0, 26.0), watchos(2.0, 26.0), tvos(9.0, 26.0), macCatalyst(10.10, 26.0));
 
@@ -133,6 +133,10 @@
 		YES for success.
 	@discussion
 		Like `readIntoBuffer:error:`, but can be used to read fewer frames than buffer.frameCapacity.
+
+		Starting in macOS 27.0, iOS 27.0, watchOS 27.0, and tvOS 27.0, attempting to read beyond the
+		end of the file will return NO and set outError to an NSError with domain NSOSStatusErrorDomain
+		and code kAudioFileEndOfFileError.
 */
 - (BOOL)readIntoBuffer:(AVAudioPCMBuffer *)buffer frameCount:(AVAudioFrameCount)frames error:(NSError **)outError;
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioFormat.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioFormat.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioFormat.h	2026-04-18 22:05:10
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioFormat.h	2026-05-22 05:36:49
@@ -7,7 +7,7 @@
 
 #import <AVFAudio/AVAudioChannelLayout.h>
 
-#if __has_include(<CoreMedia/CMFormatDescription.h>) && !0
+#if __has_include(<CoreMedia/CMFormatDescription.h>) && !0 && !0
 #define AVAUDIOFORMAT_HAVE_CMFORMATDESCRIPTION 1
 #import <CoreMedia/CMFormatDescription.h>
 #endif
@@ -45,7 +45,7 @@
 	
 		Instances of this class are immutable.
 */
-NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioFormat : NSObject <NSSecureCoding> {
 @private
 	AudioStreamBasicDescription _asbd;
@@ -148,7 +148,18 @@
  	@discussion
  		If formatDescription is invalid, this method fails (returns nil).
  */
-- (instancetype)initWithCMAudioFormatDescription:(CMAudioFormatDescriptionRef)formatDescription API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0));
+- (instancetype)initWithCMAudioFormatDescription:(CMAudioFormatDescriptionRef)formatDescription API_DEPRECATED_WITH_REPLACEMENT("initWithFormatDescription:", macos(10.11, 27.0), ios(9.0, 27.0), watchos(2.0, 27.0), tvos(9.0, 27.0));
+
+/*!
+	@method initWithFormatDescription:
+	@abstract initialize from a CMAudioFormatDescriptionRef.
+	@param formatDescription
+		the CMAudioFormatDescriptionRef.
+	@discussion
+		If formatDescription is invalid, this method fails (returns nil).
+ */
+- (nullable instancetype)initWithFormatDescription:(CMAudioFormatDescriptionRef)formatDescription API_AVAILABLE(macos(27), ios(27), watchos(27), tvos(27));
+
 #endif
 
 /*!	@method isEqual:
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioIONode.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioIONode.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioIONode.h	2026-04-18 19:21:10
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioIONode.h	2026-05-22 05:43:57
@@ -35,11 +35,20 @@
  
 		Note that when the engine is configured to operate in 
 		`AVAudioEngineManualRenderingModeRealtime`, this block will be called from a realtime 
-		context. Care should be taken not to make any blocking call (e.g. calling libdispatch,
+		context and using AVAudioIONodeInputBlockRealtimeSafe is preferred.
+		Care should be taken not to make any blocking call (e.g. calling libdispatch,
 		blocking on a mutex, allocating memory etc.) which may cause an overload at the lower layers.
 */
-typedef const AudioBufferList * __nullable (^AVAudioIONodeInputBlock)(AVAudioFrameCount inNumberOfFrames) API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
+typedef const AudioBufferList * __nullable (^ NS_SWIFT_NONSENDABLE AVAudioIONodeInputBlock)(AVAudioFrameCount inNumberOfFrames) API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
 
+/*! @typedef AVAudioIONodeInputBlockRealtimeSafe
+    @abstract
+		Identical to AVAudioIONodeInputBlock, with the addition of a realtime-safety guarantee.
+		When the engine is configured to operate in `AVAudioEngineManualRenderingModeRealtime`,
+		use of this block is preferred.
+*/
+typedef const AudioBufferList * __nullable (^AVAudioIONodeInputBlockRealtimeSafe)(AVAudioFrameCount inNumberOfFrames) CA_REALTIME_API API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) __SWIFT_UNAVAILABLE_MSG("Swift is not supported for use with audio realtime threads");
+
 /*!
 	@enum       AVAudioVoiceProcessingSpeechActivityEvent
 	@abstract	Types of speech activity events.
@@ -100,7 +109,7 @@
 		In the manual rendering mode, the AVAudioInputNode and AVAudioOutputNode perform the input
 		and output in the engine, in response to client's request.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioIONode : AVAudioNode
 
 /*!	@property presentationLatency
@@ -120,7 +129,7 @@
 	@discussion
 		This is only necessary for certain advanced usages.
 */
-@property (nonatomic, readonly, nullable) AudioUnit audioUnit;
+@property (nonatomic, readonly, nullable) AudioUnit audioUnit NS_REFINED_FOR_SWIFT;
 #endif
 
 /*! @property voiceProcessingEnabled
@@ -179,7 +188,7 @@
 		In the manual rendering mode, the format of the output scope is initially the same as that
 		of the input, but you may set it to a different format, in which case the node will convert.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(4.0), tvos(11.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(4.0), tvos(11.0))
 @interface AVAudioInputNode : AVAudioIONode <AVAudioMixing>
 - (instancetype)init NS_UNAVAILABLE; // fetch instance via -[AVAudioEngine inputNode].
 
@@ -201,6 +210,13 @@
 */
 - (BOOL)setManualRenderingInputPCMFormat:(AVAudioFormat *)format inputBlock:(AVAudioIONodeInputBlock)block API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
 
+/*! @method setRealtimeSafeManualRenderingInputPCMFormat:inputBlock:
+    @abstract
+        Identical to setManualRenderingInputPCMFormat:inputBlock:, but requires a realtime-safe
+        input block.
+*/
+- (BOOL)setRealtimeSafeManualRenderingInputPCMFormat:(AVAudioFormat *)format inputBlock:(AVAudioIONodeInputBlockRealtimeSafe)block API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) __SWIFT_UNAVAILABLE_MSG("Swift is not supported for use with audio realtime threads");
+
 /*! @property voiceProcessingBypassed
     @abstract
        Bypass all processing for microphone uplink done by the voice processing unit.
@@ -238,7 +254,7 @@
 		Continuous presence of or lack of speech activity during mute will not cause redundant notification.
 		In order to use this API, it's expected to implement the mute via the voiceProcessingInputMuted.
 */
-- (BOOL)setMutedSpeechActivityEventListener:(nullable void (^)(AVAudioVoiceProcessingSpeechActivityEvent event))listenerBlock API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos);
+- (BOOL)setMutedSpeechActivityEventListener:(nullable void (^ NS_SWIFT_SENDABLE)(AVAudioVoiceProcessingSpeechActivityEvent event))listenerBlock API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0)) API_UNAVAILABLE(watchos);
 
 /*! @property voiceProcessingOtherAudioDuckingConfiguration
 	@abstract
@@ -270,7 +286,7 @@
 		The format of the input scope is initially the same as that of the
 		output, but you may set it to a different format, in which case the node will convert.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioOutputNode : AVAudioIONode
 - (instancetype)init NS_UNAVAILABLE; // fetch instance via -[AVAudioEngine outputNode].
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioMixerNode.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioMixerNode.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioMixerNode.h	2026-04-18 23:16:02
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioMixerNode.h	2026-05-22 08:28:49
@@ -19,7 +19,7 @@
 		conversions. It also accepts any channel count and will correctly upmix or downmix
 		to the output channel count.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioMixerNode : AVAudioNode <AVAudioMixing>
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioMixing.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioMixing.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioMixing.h	2026-04-18 21:43:23
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioMixing.h	2026-05-22 05:24:21
@@ -42,7 +42,7 @@
 	For example, an AVAudioPlayerNode that is being used in a gaming scenario can set up its
 	3D mixing settings and then move from one environment to another.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @protocol AVAudioMixing <AVAudioStereoMixing, AVAudio3DMixing>
 
 /*! @abstract Returns the AVAudioMixingDestination object corresponding to specified mixer node and
@@ -85,7 +85,7 @@
 /*! @protocol   AVAudioStereoMixing
     @abstract   Protocol that defines stereo mixing properties
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @protocol AVAudioStereoMixing <NSObject>
 
 /*! @property pan
@@ -223,6 +223,7 @@
 /*! @protocol   AVAudio3DMixing
     @abstract   Protocol that defines 3D mixing properties
 */
+NS_SWIFT_SENDABLE
 @protocol AVAudio3DMixing <NSObject>
 
 /*! @property renderingAlgorithm
@@ -319,7 +320,7 @@
 		Only an instance vended by a source node (e.g. AVAudioPlayerNode) can be used
 		(see `AVAudioMixing`).
 */
-API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0))
 @interface AVAudioMixingDestination : NSObject <AVAudioMixing> {
 @private
 	void *_impl;
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioNode.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioNode.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioNode.h	2026-04-18 21:43:24
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioNode.h	2026-05-22 05:24:22
@@ -29,7 +29,7 @@
 	@discussion
 		CAUTION: This callback may be invoked on a thread other than the main thread.
 */
-typedef void (^AVAudioNodeTapBlock)(AVAudioPCMBuffer *buffer, AVAudioTime *when);
+typedef void (^ NS_SWIFT_NONSENDABLE AVAudioNodeTapBlock)(AVAudioPCMBuffer *buffer, AVAudioTime *when);
 
 /*!
 	@class AVAudioNode
@@ -48,7 +48,7 @@
 
 		Nodes do not currently provide useful functionality until attached to an engine.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioNode : NSObject {
 @protected
 	void *_impl;
@@ -114,13 +114,57 @@
 // start engine
 </pre>
 */
-- (void)installTapOnBus:(AVAudioNodeBus)bus bufferSize:(AVAudioFrameCount)bufferSize format:(AVAudioFormat * __nullable)format block:(AVAudioNodeTapBlock)tapBlock;
+- (void)installTapOnBus:(AVAudioNodeBus)bus bufferSize:(AVAudioFrameCount)bufferSize format:(AVAudioFormat * __nullable)format block:(AVAudioNodeTapBlock)tapBlock API_DEPRECATED_WITH_REPLACEMENT("installTapOnBus:bufferSize:format:error:block", ios(8.0, 27.0), watchos(2.0, 27.0), macos(10.10, 27.0), tvos(9.0, 27.0));
 
+/*! @method installTapOnBus:bufferSize:forma:errort:block:
+	@abstract Create a "tap" to record/monitor/observe the output of the node.
+	@param bus
+		the node output bus to which to attach the tap
+	@param bufferSize
+		the requested size of the incoming buffers in sample frames. Supported range is [100, 400] ms.
+	@param format
+		If non-nil, attempts to apply this as the format of the specified output bus. This should
+		only be done when attaching to an output bus which is not connected to another node; an
+		error will result otherwise.
+		The tap and connection formats (if non-nil) on the specified bus should be identical.
+		Otherwise, the latter operation will override any previously set format.
+	@param outError
+		on exit, if an error occurs, a description of the error.
+	@param tapBlock
+		a block to be called with audio buffers.
+	@return
+		YES for success.
+
+	@discussion
+		Only one tap may be installed on any bus. Taps may be safely installed and removed while
+		the engine is running.
+ 
+		Note that if you have a tap installed on AVAudioOutputNode, there could be a mismatch
+		between the tap buffer format and AVAudioOutputNode's output format, depending on the
+		underlying physical device. Hence, instead of tapping the AVAudioOutputNode, it is
+		advised to tap the node connected to it.
+
+		E.g. to capture audio from input node:
+<pre>
+AVAudioEngine *engine = [[AVAudioEngine alloc] init];
+AVAudioInputNode *input = [engine inputNode];
+AVAudioFormat *format = [input outputFormatForBus: 0];
+NSError *error = nil;
+BOOL success = [input installTapOnBus: 0 bufferSize: 8192 format: format error:&error block: ^(AVAudioPCMBuffer *buf, AVAudioTime *when) {
+// ‘buf' contains audio captured from input node at time 'when'
+}];
+....
+// start engine
+</pre>
+*/
+- (BOOL)installTapOnBus:(AVAudioNodeBus)bus bufferSize:(AVAudioFrameCount)bufferSize format:(AVAudioFormat * __nullable)format error:(NSError **)outError block:(AVAudioNodeTapBlock)tapBlock NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0));
+
 /*!	@method removeTapOnBus:
 	@abstract Destroy a tap.
 	@param bus
 		the node output bus whose tap is to be destroyed
 */
+
 - (void)removeTapOnBus:(AVAudioNodeBus)bus;
 
 /*!	@property engine
@@ -158,7 +202,7 @@
 		directly on the audio unit. These include changing initialization state, stream formats, 
 		channel layouts or connections to other audio units.
 */
-@property (nonatomic, readonly) AUAudioUnit *AUAudioUnit API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
+@property (nonatomic, readonly) AUAudioUnit *AUAudioUnit API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)) NS_REFINED_FOR_SWIFT;
 #endif // AVAUDIONODE_HAVE_AUAUDIOUNIT
 
 /*!	@property latency
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayer.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayer.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayer.h	2026-04-18 19:21:10
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayer.h	2026-05-22 08:25:34
@@ -123,7 +123,7 @@
 @end
 
 /* A protocol for delegates of AVAudioPlayer */
-__WATCHOS_AVAILABLE(3_0)
+NS_SWIFT_UI_ACTOR
 @protocol AVAudioPlayerDelegate <NSObject>
 @optional 
 /* audioPlayerDidFinishPlaying:successfully: is called when a sound has finished playing. This method is NOT called if the player is stopped due to an interruption. */
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayerNode.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayerNode.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayerNode.h	2026-04-18 23:16:03
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioPlayerNode.h	2026-05-22 05:36:49
@@ -75,7 +75,7 @@
 		some synchronisation between the calling threads internally. If you want to call player node API within this
 		completion handler block, calls should be synchronised to the same thread/queue.
 */
-typedef void (^AVAudioPlayerNodeCompletionHandler)(AVAudioPlayerNodeCompletionCallbackType callbackType) API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
+typedef void (^ NS_SWIFT_SENDING AVAudioPlayerNodeCompletionHandler)(AVAudioPlayerNodeCompletionCallbackType callbackType) API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));
 
 /*!
 	@class AVAudioPlayerNode
@@ -152,7 +152,7 @@
 		`outputPresentationLatency`) can be used to track how much data the player has rendered and
 		how much more data is left to render.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioPlayerNode : AVAudioNode <AVAudioMixing>
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
@@ -309,8 +309,19 @@
 	@discussion
 		equivalent to playAtTime:nil
 */
-- (void)play;
+- (void)play API_DEPRECATED_WITH_REPLACEMENT("playAndReturnError:", ios(8.0, 27.0), watchos(2.0, 27.0), macos(10.10, 27.0), tvos(9.0, 27.0));
 
+/*!	@method playAndReturnError:
+	@abstract Start or resume playback immediately.
+	@param outError
+		on exit, if an error occurs, a description of the error.
+	@return
+		YES for success
+	@discussion
+		equivalent to playAtTime:nil error:&error
+*/
+- (BOOL)playAndReturnError:(NSError **)outError NS_SWIFT_NAME(playAudio()) API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0));
+
 /*!	@method playAtTime:
 	@abstract Start or resume playback at a specific time.
 	@param when
@@ -337,7 +348,39 @@
 }
 </pre>
 */
-- (void)playAtTime:(AVAudioTime * __nullable)when;
+- (void)playAtTime:(AVAudioTime * __nullable)when API_DEPRECATED_WITH_REPLACEMENT("playAtTime:error:", ios(8.0, 27.0), watchos(2.0, 27.0), macos(10.10, 27.0), tvos(9.0, 27.0));
+
+/*!	@method playAtTime:error:
+	@abstract Start or resume playback at a specific time.
+	@param when
+		the node time at which to start or resume playback. nil signifies "now".
+	@param outError
+		on exit, if an error occurs, a description of the error.
+	@return
+		YES for success
+	@discussion
+		This node is initially paused. Requests to play buffers or file segments are enqueued, and
+		any necessary decoding begins immediately. Playback does not begin, however, until the player
+		has started playing, via this method.
+
+		Note that providing an AVAudioTime which is past (before lastRenderTime) will cause the
+		player to begin playback immediately.
+
+		E.g. To start a player X seconds in future:
+<pre>
+// start engine and player
+NSError *nsErr = nil;
+[_engine startAndReturnError:&nsErr];
+if (!nsErr) {
+	const float kStartDelayTime = 0.5; // sec
+	AVAudioFormat *outputFormat = [_player outputFormatForBus:0];
+	AVAudioFramePosition startSampleTime = _player.lastRenderTime.sampleTime + kStartDelayTime * outputFormat.sampleRate;
+	AVAudioTime *startTime = [AVAudioTime timeWithSampleTime:startSampleTime atRate:outputFormat.sampleRate];
+	[_player playAtTime:startTime];
+}
+</pre>
+*/
+- (BOOL)playAtTime:(AVAudioTime * __nullable)when error:(NSError **)outError NS_SWIFT_NAME(playAudio(at:)) API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0));
 
 /*! @method pause
 	@abstract Pause playback.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioRecorder.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioRecorder.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioRecorder.h	2026-04-18 21:41:00
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioRecorder.h	2026-05-22 08:18:58
@@ -19,7 +19,6 @@
     @class AVAudioRecorder
     @abstract An object that records audio data to a file.
  */
-NS_SWIFT_SENDABLE 
 API_AVAILABLE(macos(10.7), ios(3.0), watchos(4.0), tvos(17.0))
 @interface AVAudioRecorder : NSObject {
 @private
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSession.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSession.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSession.h	2026-04-18 19:21:10
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSession.h	2026-05-22 05:35:05
@@ -20,6 +20,9 @@
 // Forward declarations
 @class NSError, NSString, NSNumber;
 @class AVAudioChannelLayout;
+@class AVAudioSessionInterruptionContext;
+@class AVAudioSessionDeactivationContext;
+@class AVAudioSessionResumptionContext;
 
 // =================================================================================================
 #pragma mark-- iOS/tvOS/watchOS AVAudioSession interface --
@@ -197,19 +200,19 @@
 After an audio session goes active, `isEchoCancelledInputEnabled` property can be queried to check if the option was honored.
 Note that the enabled state may change after route changes, e.g. if user plugs in a headset, that route might not support echo cancellation.
 */
-- (BOOL)setPrefersEchoCancelledInput:(BOOL)value error:(NSError **)error API_AVAILABLE(ios(18.2)) API_UNAVAILABLE(tvos, watchos, macos, visionos);
-@property (readonly, nonatomic) BOOL prefersEchoCancelledInput API_AVAILABLE(ios(18.2)) API_UNAVAILABLE(tvos, watchos, macos, visionos);
+- (BOOL)setPrefersEchoCancelledInput:(BOOL)value error:(NSError **)error API_AVAILABLE(ios(18.2)) API_UNAVAILABLE(macos) API_UNAVAILABLE(tvos, watchos, visionos);
+@property (readonly, nonatomic) BOOL prefersEchoCancelledInput API_AVAILABLE(ios(18.2)) API_UNAVAILABLE(macos) API_UNAVAILABLE(tvos, watchos, visionos);
 
 /// Returns YES if echo cancelled input is successfully enabled on an active session.
 /// Please see `prefersEchoCancelledInput` above for more details.
-@property (readonly, nonatomic) BOOL isEchoCancelledInputEnabled API_AVAILABLE(ios(18.2)) API_UNAVAILABLE(tvos, watchos, macos, visionos);
+@property (readonly, nonatomic) BOOL isEchoCancelledInputEnabled API_AVAILABLE(ios(18.2)) API_UNAVAILABLE(macos) API_UNAVAILABLE(tvos, watchos, visionos);
 
 /// This property will return YES if the device supports echo cancellation with the following category and mode combinations:
 ///	- ``AVAudioSessionCategoryPlayAndRecord`` with ``AVAudioSessionModeDefault``
 ///	- ``AVAudioSessionCategoryMultiRoute`` with ``AVAudioSessionModeDualRoute``
 ///
 /// Query whether built-in mic / built-in speaker route supports echo cancellation for the session's given category and mode.
-@property(readonly, nonatomic) BOOL isEchoCancelledInputAvailable API_AVAILABLE(ios(18.2)) API_UNAVAILABLE(watchos, tvos) API_UNAVAILABLE(macos);
+@property(readonly, nonatomic) BOOL isEchoCancelledInputAvailable API_AVAILABLE(ios(18.2)) API_UNAVAILABLE(watchos, tvos, macos) ;
 
 /// Sets a Boolean value to inform the system to mute the session's output audio. The default value is false (unmuted).
 ///
@@ -272,8 +275,19 @@
 	AVAudioSessionRouteSharingPolicyLongFormAudio should be prepared for this method to fail if no
 	eligible audio route can be activated or if the user cancels the route picker view.
 */
-- (void)activateWithOptions:(AVAudioSessionActivationOptions)options completionHandler:(void (^)(BOOL activated, NSError * _Nullable error))handler API_AVAILABLE(watchos(5.0)) API_UNAVAILABLE(ios, tvos) API_UNAVAILABLE(macos, macCatalyst);
+- (void)activateWithOptions:(AVAudioSessionActivationOptions)options completionHandler:(void (^)(BOOL activated, NSError * _Nullable error))handler API_AVAILABLE(ios(27.0), watchos(5.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos);
 
+/// Deactivates the audio session asynchronously.
+///
+/// This method returns immediately without blocking the calling thread. The system calls the completion handler with the result.
+///
+/// - Parameters:
+///   - options: Deactivation options.
+///   - handler: A completion handler called with a success flag and an error if deactivation failed.
+- (void)deactivateWithOptions:(AVAudioSessionDeactivationOptions)options
+		 completionHandler:(void (^)(BOOL deactivated, NSError *_Nullable error))handler
+	API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos);
+
 @end // AVAudioSession(Activation)
 
 /*!
@@ -549,6 +563,59 @@
 @end // AVAudioSession (NowPlayingCandidacy)
 
 #endif // TARGET_OS_VISION
+
+// =================================================================================================
+#pragma mark-- Async Activation Types --
+
+/// An object that provides context about an audio session interruption.
+API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos)
+NS_SWIFT_NAME(AVAudioSession.InterruptionContext)
+NS_SWIFT_SENDABLE
+@interface AVAudioSessionInterruptionContext : NSObject
+
+/// The reason for the interruption.
+@property (readonly, nonatomic) AVAudioSessionInterruptionReason reason;
+
+/// Unavailable - contexts are created by the system.
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+/// An object that describes why and how the audio session deactivated.
+API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos)
+NS_SWIFT_NAME(AVAudioSession.DeactivationContext)
+NS_SWIFT_SENDABLE
+@interface AVAudioSessionDeactivationContext : NSObject
+
+/// The source of the audio session deactivation.
+@property (readonly, nonatomic) AVAudioSessionDeactivationSource source;
+
+/// Context about the interruption that caused deactivation.
+///
+/// This property is only present when the session was interrupted by another application.
+@property (readonly, nonatomic, nullable) AVAudioSessionInterruptionContext *interruptionContext;
+
+/// Unavailable - contexts are created by the system.
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+/// An object that provides context when resumption becomes available.
+API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos)
+NS_SWIFT_NAME(AVAudioSession.ResumptionContext)
+NS_SWIFT_SENDABLE
+@interface AVAudioSessionResumptionContext : NSObject
+
+/// The system's recommendation on whether to resume playback.
+@property (readonly, nonatomic) AVAudioSessionResumptionRecommendation recommendation;
+
+/// Unavailable - contexts are created by the system.
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
 
 NS_ASSUME_NONNULL_END
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionRoute.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionRoute.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionRoute.h	2026-04-18 21:56:21
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionRoute.h	2026-05-22 08:25:33
@@ -146,6 +146,7 @@
 ///
 /// Please see ``AVAudioSessionCategoryOptions/AVAudioSessionCategoryOptionBluetoothHighQualityRecording`` for details.
 @property (readonly, strong, nonatomic, nonnull) AVAudioSessionCapability* highQualityRecording;
+
 /// Describes whether this port supports far-field input capture.
 @property (readonly, strong, nonatomic, nonnull) AVAudioSessionCapability* farFieldCapture;
 @end
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionTypes.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionTypes.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionTypes.h	2026-04-18 20:48:53
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSessionTypes.h	2026-05-23 02:44:28
@@ -84,6 +84,9 @@
 /// Input or output connected via Thunderbolt
 OS_EXPORT AVAudioSessionPort const AVAudioSessionPortThunderbolt        API_AVAILABLE(ios(14.0), watchos(7.0), tvos(14.0)) API_UNAVAILABLE(macos);
 
+/// Output to a media device vended through a system-wide extension that the user has installed
+OS_EXPORT AVAudioSessionPort const AVAudioSessionPortMediaDeviceExtension    API_AVAILABLE(ios(27.0)) API_UNAVAILABLE(watchos, tvos, macos, visionos);
+
 #pragma mark -- audio session categories --
 
 /// A category defines a broad set of behaviors for a session.
@@ -197,19 +200,18 @@
 /// - if the session is output muted, system may prevent interrupting other active audio apps.
 OS_EXPORT AVAudioSessionMode const AVAudioSessionModeShortFormVideo API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(watchos, tvos, visionos, macos);
 
-/// Appropriate for applications that require simultaneous use of built-in microphone/speaker
-/// with a secondary audio device that supports both input and output capabilities.
+/// A mode that provides simultaneous use of the built-in microphone/speaker and a secondary audio device that supports input and output.
 ///
-/// Only valid with ``AVAudioSessionCategoryMultiRoute``.
+/// This mode can only be used with the ``AVAudioSessionCategoryMultiRoute`` category. It additionally requires you to set the ``AVAudioSesssion/CategoryOptions/allowBluetoothHFP`` option.
 ///
-/// This mode requires ``AVAudioSessionCategoryOptionAllowBluetoothHFP`` to be set
+/// Enabling this mode results in the following behavior:
+/// - The primary audio route is always the built-in microphone/speaker.
+/// - The supported secondary route types are ``AVAudioSessionPortHeadsetMic``, ``AVAudioSessionPortHeadphones``, ``AVAudioSessionPortBluetoothLE``, and ``AVAudioSessionPortBluetoothHFP``.
+/// - Only audio routes that support input and output are available for use.
+/// - The hardware volume controls adjusts the volume for both primary and secondary routes.
+/// - The system may engage appropriate signal processing for output routes.
 ///
-/// When this mode is set:
-/// - The audio route will always include built-in mic/speaker as the primary route
-/// - Supported secondary route types: ``AVAudioSessionPortHeadsetMic``, ``AVAudioSessionPortHeadphones``, ``AVAudioSessionPortBluetoothLE``, ``AVAudioSessionPortBluetoothHFP``
-/// - Only routes with both input/output capabilities will be supported
-/// - Hardware volume controls will adjust volume for both primary and secondary routes
-///   - System may engage appropriate signal processing for output routes
+/// > Important: This API may not be used to enable recordings of others without their awareness.
 OS_EXPORT AVAudioSessionMode const AVAudioSessionModeDualRoute API_AVAILABLE(ios(26.2)) API_UNAVAILABLE(watchos, tvos, visionos, macos);
 
 #pragma mark-- Names for NSNotifications --
@@ -224,7 +226,7 @@
 	In the case of a begin interruption notification, the reason for the interruption can be found
 	within the info dictionary under the key AVAudioSessionInterruptionReasonKey.
 */
-OS_EXPORT NSNotificationName const  AVAudioSessionInterruptionNotification API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos);
+OS_EXPORT NSNotificationName const  AVAudioSessionInterruptionNotification API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_DEPRECATED("Use AVAudioSessionDidBecomeInactiveNotification and AVAudioSessionResumptionRecommendationNotification instead", ios(6.0, 27.0), watchos(2.0, 27.0), tvos(9.0, 27.0), visionos(1.0, 27.0)) API_UNAVAILABLE(macos);
 
 /*!
 	@brief	Notification sent to registered listeners when an audio route change has occurred.
@@ -303,6 +305,21 @@
 /// Notification sent to registered listeners when the application's output is muted and user hints to unmute.
 OS_EXPORT NSNotificationName const AVAudioSessionUserIntentToUnmuteOutputNotification API_AVAILABLE(ios(26.0)) API_UNAVAILABLE(watchos, tvos, visionos, macos) NS_SWIFT_NAME(AVAudioSession.userIntentToUnmuteOutputNotification);
 
+/// Notification sent when the audio session becomes active.
+///
+/// This notification has no userInfo payload.
+OS_EXPORT NSNotificationName const AVAudioSessionDidBecomeActiveNotification API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos) NS_SWIFT_NAME(AVAudioSession.didBecomeActiveNotification);
+
+/// Notification sent when the audio session becomes inactive.
+///
+/// The userInfo dictionary contains an ``AVAudioSessionDeactivationContext`` object accessible via ``AVAudioSessionDeactivationContextKey``.
+OS_EXPORT NSNotificationName const AVAudioSessionDidBecomeInactiveNotification API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos) NS_SWIFT_NAME(AVAudioSession.didBecomeInactiveNotification);
+
+/// Notification sent when the system provides a resumption recommendation.
+///
+/// The userInfo dictionary contains an ``AVAudioSessionResumptionContext`` object accessible via ``AVAudioSessionResumptionContextKey``.
+OS_EXPORT NSNotificationName const AVAudioSessionResumptionRecommendationNotification API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos) NS_SWIFT_NAME(AVAudioSession.resumptionRecommendationNotification);
+
 #pragma mark-- Keys for NSNotification userInfo dictionaries --
 
 /// keys for AVAudioSessionSpatialPlaybackCapabilitiesChangedNotification
@@ -311,13 +328,13 @@
 
 /// keys for AVAudioSessionInterruptionNotification
 /// Value is an NSNumber representing an AVAudioSessionInterruptionType
-OS_EXPORT NSString *const AVAudioSessionInterruptionTypeKey API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos);
+OS_EXPORT NSString *const AVAudioSessionInterruptionTypeKey API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_DEPRECATED("Use AVAudioSessionDidBecomeInactiveNotification and AVAudioSessionResumptionRecommendationNotification instead", ios(6.0, 27.0), watchos(2.0, 27.0), tvos(9.0, 27.0), visionos(1.0, 27.0)) API_UNAVAILABLE(macos);
 
 /// Only present for end interruption events.  Value is of type AVAudioSessionInterruptionOptions.
-OS_EXPORT NSString *const AVAudioSessionInterruptionOptionKey API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos);
+OS_EXPORT NSString *const AVAudioSessionInterruptionOptionKey API_AVAILABLE(ios(6.0), watchos(2.0), tvos(9.0)) API_DEPRECATED("Use AVAudioSessionDidBecomeInactiveNotification and AVAudioSessionResumptionRecommendationNotification instead", ios(6.0, 27.0), watchos(2.0, 27.0), tvos(9.0, 27.0), visionos(1.0, 27.0)) API_UNAVAILABLE(macos);
 
 /// Only present in begin interruption events. Value is of type AVAudioSessionInterruptionReason.
-OS_EXPORT NSString *const AVAudioSessionInterruptionReasonKey API_AVAILABLE(ios(14.5), watchos(7.3)) API_UNAVAILABLE(tvos, macos);
+OS_EXPORT NSString *const AVAudioSessionInterruptionReasonKey API_AVAILABLE(ios(14.5), watchos(7.3)) API_DEPRECATED("Use AVAudioSessionDeactivationContext.interruptionDetails.reason instead", ios(14.5, 27.0), watchos(7.3, 27.0), tvos(14.5, 27.0), visionos(1.0, 27.0)) API_UNAVAILABLE(tvos, macos);
 
 /*!
 	Only present in begin interruption events, where the interruption is a direct result of the
@@ -355,6 +372,16 @@
 /// Value is an NSNumber whose boolean value indicates if microphone injection is available.
 OS_EXPORT NSString *const AVAudioSessionMicrophoneInjectionIsAvailableKey API_AVAILABLE(ios(18.2), visionos(2.2)) API_UNAVAILABLE(tvos, watchos, macos);
 
+/// Keys for ``AVAudioSessionDidBecomeInactiveNotification``
+/// Value is an ``AVAudioSessionDeactivationContext`` object describing the deactivation.
+OS_EXPORT NSString *const AVAudioSessionDeactivationContextKey API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos)
+NS_SWIFT_NAME(AVAudioSession.deactivationContextKey);
+
+/// Keys for ``AVAudioSessionResumptionRecommendationNotification``
+/// Value is an ``AVAudioSessionResumptionContext`` describing the resumption recommendation.
+OS_EXPORT NSString *const AVAudioSessionResumptionContextKey API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos)
+NS_SWIFT_NAME(AVAudioSession.resumptionContextKey);
+
 /*!
 	@brief  Notification sent to registered listeners when there are changes in ``availableInputs``.
 
@@ -368,13 +395,19 @@
 /*!
     @enum AVAudioSessionActivationOptions
     @brief   For use with activateWithOptions:completionHandler:
-    
-    Reserved for future use. Added in watchOS 5.0.
 */
 typedef NS_OPTIONS(NSUInteger, AVAudioSessionActivationOptions) {
     AVAudioSessionActivationOptionNone    = 0
 };
 
+/// Options for deactivating an AVAudioSession
+typedef NS_OPTIONS(NSUInteger, AVAudioSessionDeactivationOptions) {
+    AVAudioSessionDeactivationOptionNone = 0,
+
+    /// Notify an interrupted app that the interruption has ended and it may resume playback.
+    AVAudioSessionDeactivationOptionNotifyOthersOnDeactivation API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos) = 1 << 0,
+};
+
 /// For use with overrideOutputAudioPort:error:
 typedef NS_ENUM(NSUInteger, AVAudioSessionPortOverride) {
     /// No override.  Return audio routing to the default state for the current audio category.
@@ -566,7 +599,7 @@
 
 	/// 	This option should be used if a session prefers to use FarFieldInput when available.
 	/// 	This option is only valid with categories that support input -
-	/// 	``AVAudioSessionCategoryPlayAndRecord`` and ``AVAudioSessionCategoryRecord``.
+	/// 	``AVAudioSessionCategoryPlayAndRecord``, ``AVAudioSessionCategoryRecord``, and ``AVAudioSessionMultiRoute`` with ``AVAudioSessionModeDualRoute``.
 	///
 	/// 	- This option requires ``AVAudioSessionCategoryOptionAllowBluetoothHFP`` to be set.
 	/// 	Otherwise error will be returned.
@@ -607,14 +640,14 @@
 typedef NS_ENUM(NSUInteger, AVAudioSessionInterruptionType) {
     AVAudioSessionInterruptionTypeBegan = 1, ///< the system has interrupted your audio session
     AVAudioSessionInterruptionTypeEnded = 0, ///< the interruption has ended
-};
+} API_DEPRECATED("Use AVAudioSessionDidBecomeInactiveNotification and AVAudioSessionResumptionRecommendationNotification instead", ios(6.0, 27.0), watchos(2.0, 27.0), tvos(9.0, 27.0), visionos(1.0, 27.0));
 
 /// Values for AVAudioSessionInterruptionOptionKey in AVAudioSessionInterruptionNotification's
 /// userInfo dictionary.
 typedef NS_OPTIONS(NSUInteger, AVAudioSessionInterruptionOptions) {
     /// Indicates that you should resume playback now that the interruption has ended.
     AVAudioSessionInterruptionOptionShouldResume = 1
-};
+} API_DEPRECATED("Use AVAudioSessionResumptionRecommendationNotification instead", ios(6.0, 27.0), watchos(2.0, 27.0), tvos(9.0, 27.0), visionos(1.0, 27.0));
 
 /*!
     @enum AVAudioSessionInterruptionReason
@@ -651,6 +684,20 @@
 	AVAudioSessionInterruptionReasonDeviceUnauthenticated API_UNAVAILABLE(visionos) = 5,
 #endif // TARGET_OS_VISION
 } NS_SWIFT_NAME(AVAudioSession.InterruptionReason);
+
+/// The source of the audio session deactivation.
+typedef NS_ENUM(NSInteger, AVAudioSessionDeactivationSource) {
+	AVAudioSessionDeactivationSourceApp = 1,      // App requested deactivation.
+	AVAudioSessionDeactivationSourceSystem = 2,   // The system deactivated the session.
+} NS_SWIFT_NAME(AVAudioSession.DeactivationSource)
+API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos);
+
+/// The system's recommendation on whether to resume playback.
+typedef NS_ENUM(NSInteger, AVAudioSessionResumptionRecommendation) {
+	AVAudioSessionResumptionRecommendationShouldNotResume = 0,  // The system recommends not resuming.
+	AVAudioSessionResumptionRecommendationShouldResume = 1,     // The system recommends resuming.
+} NS_SWIFT_NAME(AVAudioSession.ResumptionRecommendation)
+API_AVAILABLE(ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(macos);
 
 ///  options for use when calling setActive:withOptions:error:
 typedef NS_OPTIONS(NSUInteger, AVAudioSessionSetActiveOptions)
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSinkNode.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSinkNode.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSinkNode.h	2026-04-18 23:16:02
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSinkNode.h	2026-05-23 02:50:53
@@ -30,8 +30,15 @@
         An OSStatus result code. If an error is returned, the input data should be assumed to be
         invalid.
  */
-typedef OSStatus (^AVAudioSinkNodeReceiverBlock)(const AudioTimeStamp *timestamp, AVAudioFrameCount frameCount, const AudioBufferList *inputData) API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)) ;
+typedef OSStatus (^ NS_SWIFT_NONSENDABLE AVAudioSinkNodeReceiverBlock)(const AudioTimeStamp *timestamp, AVAudioFrameCount frameCount, const AudioBufferList *inputData) API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)) ;
 
+/*! @typedef AVAudioSinkNodeReceiverBlockRealtimeSafe
+    @abstract
+        Identical to AVAudioSinkNodeReceiverBlock, with the addition of a realtime-safety
+        guarantee.
+*/
+typedef OSStatus (^AVAudioSinkNodeReceiverBlockRealtimeSafe)(const AudioTimeStamp *timestamp, AVAudioFrameCount frameCount, const AudioBufferList *inputData) CA_REALTIME_API API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0))  __SWIFT_UNAVAILABLE_MSG("Swift is not supported for use with audio realtime threads");
+
 /*! @class AVAudioSinkNode
     @abstract AVAudioSinkNode wraps a client provided block to receive input audio on the audio IO thread.
     @discussion
@@ -49,7 +56,7 @@
 
         AVAudioSinkNode does not have an output bus and therefore it does not support tapping.
  */
-API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)) 
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)) 
 @interface AVAudioSinkNode : AVAudioNode
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -59,6 +66,8 @@
     @param block
         The block that receives audio data from the input.
     @discussion
+        The preferred initializer is initWithRealtimeSafeReceiverBlock: and should be used instead.
+ 
         The receiver block is called when the input data is available.
 
         The block will be called on the realtime thread and it is the client's responsibility to
@@ -70,6 +79,12 @@
         The audio format for the data received by the block will be set to the node's input format.
  */
 - (instancetype)initWithReceiverBlock:(AVAudioSinkNodeReceiverBlock)block NS_DESIGNATED_INITIALIZER;
+
+/*! @method initWithRealtimeSafeReceiverBlock:
+    @abstract
+        Identical to initWithReceiverBlock:, but requires a realtime-safe block and is the preferred initializer.
+*/
+- (instancetype)initWithRealtimeSafeReceiverBlock:(AVAudioSinkNodeReceiverBlockRealtimeSafe)block NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) __SWIFT_UNAVAILABLE_MSG("Swift is not supported for use with audio realtime threads");
 
 @end
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSourceNode.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSourceNode.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSourceNode.h	2026-04-18 19:21:10
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioSourceNode.h	2026-05-22 05:36:49
@@ -38,18 +38,25 @@
         An OSStatus result code. If an error is returned, the audio data should be assumed to be
         invalid.
  */
-typedef OSStatus (^AVAudioSourceNodeRenderBlock)(BOOL *isSilence, const AudioTimeStamp *timestamp, AVAudioFrameCount frameCount, AudioBufferList *outputData) API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)) ;
+typedef OSStatus (^ NS_SWIFT_NONSENDABLE AVAudioSourceNodeRenderBlock)(BOOL *isSilence, const AudioTimeStamp *timestamp, AVAudioFrameCount frameCount, AudioBufferList *outputData) API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)) ;
 
+/*! @typedef AVAudioSourceNodeRenderBlockRealtimeSafe
+    @abstract
+        Identical to AVAudioSourceNodeRenderBlock, with the addition of a realtime-safety
+        guarantee.
+*/
+typedef OSStatus (^AVAudioSourceNodeRenderBlockRealtimeSafe)(BOOL *isSilence, const AudioTimeStamp *timestamp, AVAudioFrameCount frameCount, AudioBufferList *outputData) CA_REALTIME_API API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0))  __SWIFT_UNAVAILABLE_MSG("Swift is not supported for use with audio realtime threads");
+
 /*!
     @class AVAudioSourceNode
     @abstract AVAudioSourceNode wraps a client provided block to supply audio.
     @discussion
         With AVAudioSourceNode the client can supply audio data for rendering through an
-        AVAudioSourceNodeRenderBlock block.
+        AVAudioSourceNodeRenderBlock or AVAudioSourceNodeRenderBlockRealtimeSafe block.
         This is similar to setting the input callback on an Audio Unit with the
         kAudioUnitProperty_SetRenderCallback property.
  */
-API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)) 
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0)) 
 @interface AVAudioSourceNode : AVAudioNode <AVAudioMixing>
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -61,6 +68,8 @@
     @discussion
         The block can be called on realtime or non-realtime threads depending on the engine’s
         operating mode and it is the client's responsibility to handle it in a thread-safe manner.
+        When the the engine is configured for realtime use (rendering to a device, or using
+        `AVAudioEngineManualRenderingModeRealtime`) initWithRealtimeSafeRenderBlock: is preferred.
 
         The audio format for the output bus will be set from the connection format when connecting
         to another node.
@@ -70,6 +79,14 @@
  */
 - (instancetype)initWithRenderBlock:(AVAudioSourceNodeRenderBlock)block NS_DESIGNATED_INITIALIZER;
 
+/*! @method initWithRealtimeSafeRenderBlock:
+    @abstract
+        Identical to initWithRenderBlock:, but requires a realtime-safe block.
+        When the the engine is configured for realtime use (rendering to a device, or using
+        `AVAudioEngineManualRenderingModeRealtime`) this initializer is preferred.
+*/
+- (instancetype)initWithRealtimeSafeRenderBlock:(AVAudioSourceNodeRenderBlockRealtimeSafe)block NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) __SWIFT_UNAVAILABLE_MSG("Swift is not supported for use with audio realtime threads");
+
 /*! @method initWithFormat:renderBlock:
     @abstract Create a node with a render block.
     @param format
@@ -79,6 +96,8 @@
     @discussion
         The block can be called on realtime or non-realtime threads depending on the engine’s
         operating mode and it is the client's responsibility to handle it in a thread-safe manner.
+        When the the engine is configured for realtime use (rendering to a device, or using
+        `AVAudioEngineManualRenderingModeRealtime`) initWithFormat:realtimeSafeRenderBlock: is preferred.
 
         The audio format for the output bus will be set from the connection format when connecting
         to another node.
@@ -87,6 +106,14 @@
         Linear PCM conversions are supported (sample rate, bit depth, interleaving).
  */
 - (instancetype)initWithFormat:(AVAudioFormat*)format renderBlock:(AVAudioSourceNodeRenderBlock)block NS_DESIGNATED_INITIALIZER;
+
+/*! @method initWithFormat:realtimeSafeRenderBlock:
+    @abstract
+        Identical to initWithFormat:renderBlock:, but requires a realtime-safe block.
+        When the the engine is configured for realtime use (rendering to a device, or using
+        `AVAudioEngineManualRenderingModeRealtime`) this initializer is preferred.
+*/
+- (instancetype)initWithFormat:(AVAudioFormat*)format realtimeSafeRenderBlock:(AVAudioSourceNodeRenderBlockRealtimeSafe)block NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(27.0), ios(27.0), watchos(27.0), tvos(27.0), visionos(27.0)) __SWIFT_UNAVAILABLE_MSG("Swift is not supported for use with audio realtime threads");
 
 @end
 
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioTypes.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioTypes.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioTypes.h	2026-04-18 22:05:09
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioTypes.h	2026-05-22 08:28:48
@@ -42,7 +42,7 @@
 		the callback arrives on a non-main thread and it is the client's responsibility to handle it
 		in a thread-safe manner.
 */
-typedef void (^AVAudioNodeCompletionHandler)(void);
+typedef void (^ NS_SWIFT_SENDING AVAudioNodeCompletionHandler)(void);
 
 /*!	@typedef AVAudioNodeBus
 	@abstract The index of a bus on an AVAudioNode.
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnit.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnit.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnit.h	2026-04-18 21:43:24
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnit.h	2026-05-22 08:25:34
@@ -24,7 +24,7 @@
         An AVAudioUnit is an AVAudioNode implemented by an audio unit. Depending on the type of
         the audio unit, audio is processed either in real-time or non real-time.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
 @interface AVAudioUnit : AVAudioNode
 
 #if AVAUDIOUNIT_HAVE_AUDIOUNIT
@@ -47,7 +47,7 @@
 		AVAudioUnitGenerator, AVAudioUnitMIDIInstrument, or AVAudioUnitTimeEffect), selected
 		according to the component's type.
 */
-+ (void)instantiateWithComponentDescription:(AudioComponentDescription)audioComponentDescription options:(AudioComponentInstantiationOptions)options completionHandler:(void (^)(__kindof AVAudioUnit * __nullable audioUnit, NSError * __nullable error))completionHandler API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0));
++ (void)instantiateWithComponentDescription:(AudioComponentDescription)audioComponentDescription options:(AudioComponentInstantiationOptions)options completionHandler:(void (^ NS_SWIFT_SENDING)(__kindof AVAudioUnit * __nullable audioUnit, NSError * __nullable error))completionHandler API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0));
 
 /*! @method loadAudioUnitPresetAtURL:error:
     @abstract Load an audio unit preset.
@@ -75,7 +75,7 @@
         directly on the audio unit. These include changing initialization state, stream formats,
         channel layouts or connections to other audio units.
 */
-@property (nonatomic, readonly) AudioUnit audioUnit;
+@property (nonatomic, readonly) AudioUnit audioUnit NS_REFINED_FOR_SWIFT;
 
 #ifdef __OBJC2__
 /*! @property AUAudioUnit
@@ -89,7 +89,7 @@
         engine should be performed directly on the audio unit. These include changing initialization
         state, stream formats, channel layouts or connections to other audio units.
 */
-@property (nonatomic, readonly) AUAudioUnit *AUAudioUnit API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0));
+@property (nonatomic, readonly) AUAudioUnit *AUAudioUnit API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)) NS_REFINED_FOR_SWIFT;
 #endif // __OBJC2__
 
 /*! @property name
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitComponent.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitComponent.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitComponent.h	2026-04-18 20:48:54
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitComponent.h	2026-05-22 08:18:59
@@ -174,7 +174,7 @@
 #pragma mark AVAudioUnitComponentManager
 
 /* The notification object is an AVAudioUnitComponent object */
-extern NSString * const AVAudioUnitComponentTagsDidChangeNotification API_AVAILABLE(macos(10.10), ios(9.0), tvos(9.0)) API_UNAVAILABLE(watchos);
+extern NSString * const AVAudioUnitComponentTagsDidChangeNotification API_AVAILABLE(macos(10.10), ios(9.0), tvos(9.0)) API_DEPRECATED("User tags are only supported on macOS", ios(9.0, 27.0), tvos(9.0, 27.0)) API_UNAVAILABLE(watchos) API_UNAVAILABLE(watchos);
 
 /*!
 	@class	AVAudioUnitComponentManager
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitDelay.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitDelay.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitDelay.h	2026-04-18 23:16:02
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitDelay.h	2026-05-22 08:28:49
@@ -18,7 +18,7 @@
         a tape delay.
  
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
 @interface AVAudioUnitDelay : AVAudioUnitEffect
 
 /*! @property delayTime
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitDistortion.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitDistortion.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitDistortion.h	2026-04-18 23:16:03
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitDistortion.h	2026-05-22 08:28:50
@@ -38,7 +38,7 @@
     @abstract An AVAudioUnitEffect that implements a multi-stage distortion effect.
  
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
 @interface AVAudioUnitDistortion : AVAudioUnitEffect
 
 /*! @method loadFactoryPreset:
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitEQ.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitEQ.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitEQ.h	2026-04-18 21:43:23
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitEQ.h	2026-05-23 02:44:29
@@ -81,7 +81,7 @@
         A standalone instance of AVAudioUnitEQFilterParameters cannot be created. Only an instance
         vended out by a source object (e.g. AVAudioUnitEQ) can be used.
 */
-API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0))
 @interface AVAudioUnitEQFilterParameters : NSObject {
 @private
 	void *_impl;
@@ -135,7 +135,7 @@
     @abstract An AVAudioUnitEffect that implements a Multi-Band Equalizer.
  
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
 @interface AVAudioUnitEQ : AVAudioUnitEffect
 
 /*! @method initWithNumberOfBands:
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitEffect.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitEffect.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitEffect.h	2026-04-18 23:16:03
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitEffect.h	2026-05-22 08:28:50
@@ -21,7 +21,7 @@
     example of an effect unit.
  
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
 @interface AVAudioUnitEffect : AVAudioUnit
 
 #if AVAUDIOUNIT_HAVE_AUDIOUNIT
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitGenerator.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitGenerator.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitGenerator.h	2026-04-18 23:16:04
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitGenerator.h	2026-05-22 08:28:51
@@ -18,7 +18,7 @@
     A generator will have no audio input, but will just produce audio output.
     A tone generator is an example of this. 
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
 @interface AVAudioUnitGenerator : AVAudioUnit <AVAudioMixing>
 
 #if AVAUDIOUNIT_HAVE_AUDIOUNIT
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitMIDIInstrument.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitMIDIInstrument.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitMIDIInstrument.h	2026-04-18 19:21:10
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitMIDIInstrument.h	2026-05-22 05:43:57
@@ -20,7 +20,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 /// Base class for MIDI instruments.
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
 @interface AVAudioUnitMIDIInstrument : AVAudioUnit AVAudioUnitMIDIInstrument_MixingConformance
 
 #if AVAUDIOUNIT_HAVE_AUDIOUNIT
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitReverb.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitReverb.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitReverb.h	2026-04-18 23:16:03
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitReverb.h	2026-05-22 08:28:50
@@ -22,7 +22,8 @@
     AVAudioUnitReverbPresetLargeRoom2      = 9,
     AVAudioUnitReverbPresetMediumHall2     = 10,
     AVAudioUnitReverbPresetMediumHall3     = 11,
-    AVAudioUnitReverbPresetLargeHall2      = 12
+    AVAudioUnitReverbPresetLargeHall2      = 12,
+    AVAudioUnitReverbPresetOutdoorGeneral API_AVAILABLE(macos(27.0), ios(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(watchos) = 24
 } NS_ENUM_AVAILABLE(10_10, 8_0);
 
 /*! @class AVAudioUnitReverb
@@ -33,7 +34,7 @@
         the original signal using the wetDryMix parameter.
  
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
 @interface AVAudioUnitReverb : AVAudioUnitEffect
 
 /*! @method loadFactoryPreset:
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitSampler.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitSampler.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitSampler.h	2026-04-18 23:16:04
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitSampler.h	2026-05-22 08:28:51
@@ -19,7 +19,7 @@
 
     The output is a single stereo bus. 
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
 @interface AVAudioUnitSampler : AVAudioUnitMIDIInstrument
 
 /*! @method loadSoundBankInstrumentAtURL:program:bankMSB:bankLSB:error:
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitTimeEffect.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitTimeEffect.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitTimeEffect.h	2026-04-18 23:16:03
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitTimeEffect.h	2026-05-22 08:28:51
@@ -17,7 +17,7 @@
     unit is an example of a time effect unit.
  
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos)
 @interface AVAudioUnitTimeEffect : AVAudioUnit
 
 #if AVAUDIOUNIT_HAVE_AUDIOUNIT
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitTimePitch.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitTimePitch.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitTimePitch.h	2026-04-18 23:16:03
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitTimePitch.h	2026-05-22 08:28:49
@@ -15,7 +15,7 @@
         In this time effect, the playback rate and pitch parameters function independently of each other
  
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
 @interface AVAudioUnitTimePitch : AVAudioUnitTimeEffect
 
 /*! @property rate
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitVarispeed.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitVarispeed.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitVarispeed.h	2026-04-18 23:16:02
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVAudioUnitVarispeed.h	2026-05-22 08:28:49
@@ -12,7 +12,7 @@
 /*! @class AVAudioUnitVarispeed
     @abstract an AVAudioUnitTimeEffect that can be used to control the playback rate 
 */
-API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
+NS_SWIFT_SENDABLE API_AVAILABLE(macos(10.10), ios(8.0), tvos(9.0)) API_UNAVAILABLE(watchos) 
 @interface AVAudioUnitVarispeed : AVAudioUnitTimeEffect
 
 /*! @property rate
diff -ruN /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVMIDIPlayer.h /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVMIDIPlayer.h
--- /Applications/Xcode_26.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVMIDIPlayer.h	2026-04-18 23:16:03
+++ /Applications/Xcode_27.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AVFAudio.framework/Headers/AVMIDIPlayer.h	2026-05-22 08:28:50
@@ -14,7 +14,7 @@
 /*! @typedef AVMIDIPlayerCompletionHandler
 	@abstract Generic callback block.
  */
-typedef void (^AVMIDIPlayerCompletionHandler)(void);
+typedef void (^ NS_SWIFT_SENDING AVMIDIPlayerCompletionHandler)(void);
 
 /*! @class AVMIDIPlayer
 	@abstract A player for music file formats (MIDI, iMelody).

Clone this wiki locally