Skip to content

AudioToolbox macOS xcode14.0 beta1

Manuel de la Pena edited this page Sep 6, 2022 · 5 revisions

#AudioToolbox.framework https://github.com/xamarin/xamarin-macios/pull/15877

diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h	2022-02-23 07:54:58.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h	2022-05-31 14:51:09.000000000 -0400
@@ -12,6 +12,7 @@
 #ifdef __OBJC2__
 
 #import <AudioToolbox/AUParameters.h>
+#import <AudioToolbox/AudioUnitProperties.h>
 #import <Foundation/NSExtensionRequestHandling.h>
 #import <CoreMIDI/MIDIServices.h>
 
@@ -32,6 +33,8 @@
 
 @protocol AUAudioUnitFactory;
 
+@protocol AUMessageChannel;
+
 // =================================================================================================
 
 /*!	@typedef	AUAudioUnitStatus
@@ -39,14 +42,6 @@
 */
 typedef OSStatus AUAudioUnitStatus;
 
-/*!	@typedef	AUEventSampleTime
-	@brief		Expresses time as a sample count.
-	@discussion
-		Sample times are normally positive, but hosts can propagate HAL sample times through audio
-		units, and HAL sample times can be small negative numbers.
-*/
-typedef int64_t AUEventSampleTime;
-
 /*!	@var		AUEventSampleTimeImmediate
 	@brief		A special value of AUEventSampleTime indicating "immediately."
 	@discussion
@@ -1146,6 +1141,21 @@
 */
 @property (nonatomic, nullable) AUMIDICIProfileChangedBlock profileChangedBlock API_AVAILABLE(macos(10.14), ios(12.0)) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
 
+/*!	@method		messageChannelFor:
+	@brief		Returns an object for bidirectional communication between an Audio Unit and its host.
+	@discussion
+		Message channels provide a flexible way for custom data exchange between an Audio Unit and its host.
+		An Audio Unit can support multiple message channels which are identified by the `channelName`.
+		The message channel object's lifetime is managed by the host. Message channel objects should be designed
+		in such a way that they could outlive the AU that vended them.
+		For further details see discussion for `AUMessageChannel`.
+	@param	channelName
+		The name of the message channel to be returned by the Audio Unit if supported.
+	@return
+		An object that conforms to the `AUMessageChannel` protocol.
+*/
+- (id<AUMessageChannel>)messageChannelFor:(NSString *)channelName API_AVAILABLE(macos(13.0), ios(16.0)) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+
 @end
 
 // =================================================================================================
@@ -1488,6 +1498,57 @@
 
 @end
 
+
+// =================================================================================================
+
+
+/*!	@typedef	CallHostBlock
+	@brief		Block that hosts provide to AU message channels to be called back by the AU.
+	@param	message
+		An NSDictionary with custom data. The allowed classes for key and value types are
+		NSArray, NSDictionary, NSOrderedSet, NSSet, NSString, NSData, NSNull, NSNumber, NSDate
+	@return
+		An NSDictionary with custom data. The allowed classes for key and value types are
+		NSArray, NSDictionary, NSOrderedSet, NSSet, NSString, NSData, NSNull, NSNumber, NSDate
+*/
+typedef NSDictionary * _Nonnull (^CallHostBlock)(NSDictionary *message);
+
+
+/*!	@protocol	AUMessageChannel
+	@brief		The protocol which objects returned from `[AUAudioUnit messageChannelFor:]` have to conform to.
+	@discussion
+		Audio Units and hosts that have special needs of communication, e.g. to exchange musical context required for better audio processing,
+		can implement a communication object to exchange messages in form of NSDictionaries. An Audio Unit would need to implement
+		a class conforming to the AUMessageChannel protocol and return an instance via `[AUAudioUnit messageChannelFor:]`. A host can query
+		the instance via the channel name.
+		The protocol offers a method to send messages to the AU and a block to send messages to the host.
+*/
+API_AVAILABLE(macos(13.0), ios(16.0)) __WATCHOS_PROHIBITED __TVOS_PROHIBITED
+@protocol AUMessageChannel
+
+@optional
+
+/*!	@method		callAudioUnit:
+	@brief		Calls the Audio Unit with custom data message.
+	@param	message
+		An NSDictionary with custom data. The allowed classes for key and value types are
+		NSArray, NSDictionary, NSOrderedSet, NSSet, NSString, NSData, NSNull, NSNumber, NSDate
+	@return
+		An NSDictionary with custom data. The allowed classes for key and value types are
+		NSArray, NSDictionary, NSOrderedSet, NSSet, NSString, NSData, NSNull, NSNumber, NSDate
+*/
+- (NSDictionary *)callAudioUnit:(NSDictionary *)message;
+
+/*!	@property	sendMessageToHostBlock
+	@brief		A callback for the AU to send a message to the host.
+	@discussion
+		The host has to set a block on this property.
+*/
+@property (NS_NONATOMIC_IOSONLY, copy, nullable) CallHostBlock callHostBlock;
+
+@end
+
+
 NS_ASSUME_NONNULL_END
 
 #endif // __OBJC2__
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnitImplementation.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnitImplementation.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnitImplementation.h	2022-02-23 07:11:49.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnitImplementation.h	2022-06-03 18:08:23.000000000 -0400
@@ -430,6 +430,20 @@
 */
 API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0))
 @interface AUAudioUnitV2Bridge : AUAudioUnit
+
+/*! @property audioUnit
+    @brief	  The underlying v2 AudioUnit
+	@discussion
+		We generally discourage interacting with the underlying v2 AudioUnit directly and
+		recommend using the v3 equivalent methods and properties from AUAudioUnitV2Bridge.
+		
+		In some rare cases it may be desirable to interact with the v2 AudioUnit.
+		For example, a v2 plugin may define custom properties that are not bridged to v3.
+		Implementors can sublcass AUAudioUnitV2Bridge and call the v2 API methods
+		AudioUnitGetProperty / AudioUnitSetProperty with the v2 AudioUnit.
+*/
+@property (nonatomic, readonly) AudioUnit audioUnit API_AVAILABLE(macos(11.0), ios(14.0), watchos(7.0), tvos(14.0));
+
 @end
 
 // =================================================================================================
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h	2022-02-23 10:55:28.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h	2022-05-31 15:01:46.000000000 -0400
@@ -453,7 +453,9 @@
 
     @constant       kAudioUnitSubType_Reverb2
                     A lite reverb that can be used to simulate various and different spaces
-
+ 
+	@constant       kAudioUnitSubType_AUSoundIsolation
+					An audio unit that can be used to isolate a specified sound type
 */
 CF_ENUM(UInt32) {
 	kAudioUnitSubType_PeakLimiter			= 'lmtr',
@@ -468,7 +470,8 @@
 	kAudioUnitSubType_Delay					= 'dely',
 	kAudioUnitSubType_SampleDelay			= 'sdly',
 	kAudioUnitSubType_NBandEQ				= 'nbeq',
-    kAudioUnitSubType_Reverb2               = 'rvb2'
+    kAudioUnitSubType_Reverb2               = 'rvb2',
+	kAudioUnitSubType_AUSoundIsolation API_AVAILABLE(macos(13.0), ios(16.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) = 'vois',
 };
 
 #if !TARGET_OS_IPHONE
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioCodec.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioCodec.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioCodec.h	2022-02-23 07:58:09.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioCodec.h	2022-06-03 18:08:24.000000000 -0400
@@ -738,7 +738,10 @@
 						than the requested number of output packets may have been
 						produced. Check the value returned in ioNumberPackets for the
 						actual number produced. Note that not all formats have EOF
-						markers in them. 
+						markers in them.
+     @constant        kAudioCodecProduceOutputPacketSuccessConcealed
+                        No input packets were provided, but the decoder supports packet
+                        loss concealment, so output packets were still created.
 */
 CF_ENUM(UInt32)
 {
@@ -746,7 +749,8 @@
 	kAudioCodecProduceOutputPacketSuccess					= 2,	
 	kAudioCodecProduceOutputPacketSuccessHasMore			= 3,		
 	kAudioCodecProduceOutputPacketNeedsMoreInputData		= 4,		
-	kAudioCodecProduceOutputPacketAtEOF						= 5		
+	kAudioCodecProduceOutputPacketAtEOF						= 5,
+    kAudioCodecProduceOutputPacketSuccessConcealed          = 6
 };
 
 
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h	2022-02-23 07:11:50.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h	2022-05-31 15:01:46.000000000 -0400
@@ -606,7 +606,7 @@
 extern OSStatus
 AudioComponentCopyConfigurationInfo(    AudioComponent      inComponent,
                                         CFDictionaryRef __nullable * __nonnull outConfigurationInfo)
-                                                    API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, watchos, tvos);
+                                                    API_AVAILABLE(macos(10.7), ios(16.0)) API_UNAVAILABLE(watchos, tvos);
 
 /*!
 	 @enum		 AudioComponentValidationResult
@@ -658,7 +658,7 @@
 AudioComponentValidate( AudioComponent					inComponent,
 						CFDictionaryRef __nullable		inValidationParameters,
 						AudioComponentValidationResult *outValidationResult)
-                                                    API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, watchos, tvos);
+                                                    API_AVAILABLE(macos(10.7), ios(16.0)) API_UNAVAILABLE(watchos, tvos);
 	
 /*!
 	@define		kAudioComponentValidationParameter_TimeOut
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioConverter.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioConverter.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioConverter.h	2022-02-23 07:08:43.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioConverter.h	2022-06-03 18:08:24.000000000 -0400
@@ -662,6 +662,8 @@
                     number of packets of audio data actually being provided for input, or 0 if
                     there is no more input.
     @param      ioData
+                    This points to an audio buffer list to be filled in by the callback to refer to the
+                    buffer(s) provided by the callback.
                     On exit, the members of ioData should be set to point to the audio data
                     being provided for input.
     @param      outDataPacketDescription
@@ -675,12 +677,29 @@
 	
 	The AudioConverter requests a minimum number of packets (*ioNumberDataPackets).
 	The callback may return one or more packets. If this is less than the minimum,
-	the callback will simply be called again in the near future.
+	the callback will simply be called again in the near future. Note that ioNumberDataPackets counts
+	packets in terms of the converter's input format (not its output format).
 
-	The callback manipulates the members of ioData to point to one or more buffers
+	The callback may be asked to provide multiple input packets in a single call, even for compressed
+	formats.  The callback must update the number of packets pointed to by ioNumberDataPackets
+	to indicate the number of packets actually being provided, and if the packets require packet
+	descriptions, these must be filled into the array pointed to by outDataPacketDescription, one
+	packet description per packet.
+
+	The callback is given an audio buffer list pointed to by ioData.  This buffer list may refer to
+	existing buffers owned and allocated by the audio converter, in which case the callback may
+	use them and copy input audio data into them.  However, the buffer list may also be empty
+	(mDataByteSize == 0 and/or mData == NULL), in which case the callback must provide its own
+	buffers.  The callback manipulates the members of ioData to point to one or more buffers
 	of audio data (multiple buffers are used with non-interleaved PCM data). The
-	callback is responsible for not freeing or altering this buffer until it is
-	called again.
+	callback is responsible for not freeing or altering this buffer until it is called again.
+
+	For input data that varies from one packet to another in either size (bytes per packet)
+	or duration (frames per packet), such as when decoding compressed audio, the callback
+	should expect outDataPacketDescription to be non-null and point to array of packet descriptions,
+	which the callback must fill in, one for every packet provided by the callback.  Each packet must
+	have a valid packet description, regardless of whether or not these descriptions are different
+	from each other.  Packet descriptions are required even if there is only one packet.
 
 	If the callback returns an error, it must return zero packets of data.
 	AudioConverterFillComplexBuffer will stop producing output and return whatever
@@ -725,6 +744,12 @@
 
 	Produces a buffer list of output data from an AudioConverter. The supplied input
 	callback function is called whenever necessary.
+	
+	If the output format uses packet descriptions, such as most compressed formats where packets
+	vary in size or duration, the caller is expected to provide a buffer for holding packet descriptions,
+	pointed to by outPacketDescription.  The array must have the capacity to hold a packet description
+	for each output packet that may be written.  A packet description array is expected even if only
+	a single output packet is to be written.
 */
 extern OSStatus
 AudioConverterFillComplexBuffer(    AudioConverterRef                   inAudioConverter,
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioQueue.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioQueue.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioQueue.h	2022-02-23 07:58:08.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioQueue.h	2022-05-31 15:01:45.000000000 -0400
@@ -135,8 +135,8 @@
     				Access to the required codec is not permitted (possibly due to incompatible
     				AudioSession settings on iOS).
     @constant   kAudioQueueErr_QueueInvalidated
-    				On iOS, the audio server has exited, causing this audio queue to have become
-    				invalid.
+    				On iOS derived platforms (excluding Catalyst), the audio server has exited,
+    				causing this audio queue to have become invalid.
     @constant   kAudioQueueErr_TooManyTaps
     				There can only be one processing tap per audio queue.
     @constant   kAudioQueueErr_InvalidTapContext
@@ -1625,7 +1625,8 @@
     @param      inTime
         A pointer to a structure containing the time to be translated.
     @param      outTime
-        A pointer to the the translated time.
+        On entry, mFlags indicate the desired translations. On exit, mFlags indicates which
+        of the requested translated fields were successfully populated.
     @result
         An OSStatus result code.
 */
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h	2022-02-23 07:08:43.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h	2022-06-03 18:08:24.000000000 -0400
@@ -15,8 +15,11 @@
 #include <TargetConditionals.h>
 
 #include <AudioToolbox/AudioCodec.h>
+#include <AudioToolbox/AUAudioUnit.h>
+#include <AudioToolbox/AUAudioUnitImplementation.h>
 #include <AudioToolbox/AUComponent.h>
 #include <AudioToolbox/AUGraph.h>
+#include <AudioToolbox/AUParameters.h>
 #include <AudioToolbox/AudioComponent.h>
 #include <AudioToolbox/AudioConverter.h>
 #include <AudioToolbox/AudioFile.h>
@@ -27,6 +30,7 @@
 #include <AudioToolbox/AudioServices.h>
 #include <AudioToolbox/AudioUnitParameters.h>
 #include <AudioToolbox/AudioUnitProperties.h>
+#include <AudioToolbox/AudioUnitUtilities.h>
 #include <AudioToolbox/AudioWorkInterval.h>
 #include <AudioToolbox/CAFFile.h>
 #include <AudioToolbox/CAShow.h>
@@ -37,18 +41,10 @@
 #if !TARGET_OS_IPHONE
 	// macOS only
 	#include <AudioToolbox/AudioFileComponent.h>
-	#include <AudioToolbox/AudioUnitUtilities.h>
 	#include <AudioToolbox/AUMIDIController.h>
 	#include <AudioToolbox/CoreAudioClock.h>
 #endif
 
-#ifdef __OBJC2__
-	// iOS (all architectures), macOS 64-bit only
-	#import <AudioToolbox/AUAudioUnit.h>
-	#import <AudioToolbox/AUAudioUnitImplementation.h>
-	#import <AudioToolbox/AUParameters.h>
-#endif
-
 #if TARGET_OS_OSX || TARGET_OS_IOS
 	#include <AudioToolbox/AudioSession.h>
 #endif
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h	2022-02-23 07:58:08.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h	2022-05-31 15:01:45.000000000 -0400
@@ -355,7 +355,14 @@
 		// or reverberant sound, sometimes also called loss of presence.
 		// However the flip side is that it can sound more stuttery for some content.
 		// Global, Boolean, 0->1, 1
-	kNewTimePitchParam_EnablePeakLocking			= 6
+	kNewTimePitchParam_EnablePeakLocking			= 6,
+    
+    // Transient preservation uses group delay to identify transients
+    // It resets the phase at points of transients to avoid smearing
+    // It also reduces the stretch factor at those points to avoid smearing
+    // This needs to be compensated at other frames, which can be problematic
+    // Global, Boolean, 0->1, 1
+    kNewTimePitchParam_EnableTransientPreservation  = 7
 };
 
 // Parameters for the AUSampler unit
@@ -693,6 +700,25 @@
 #endif
 };
 
+// Parameters for the AUSoundIsolation unit
+CF_ENUM(AudioUnitParameterID) {
+    // Global, Percent, 0->100, 100
+    kAUSoundIsolationParam_WetDryMixPercent API_AVAILABLE(macos(13.0), ios(16.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) = 0,
+    // Global, Indexed, 1->1, 1
+    kAUSoundIsolationParam_SoundToIsolate API_AVAILABLE(macos(13.0), ios(16.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) = 1,
+};
+
+/*!
+ @enum          AUSoundIsolation sound types
+ @brief         Constants available as values for parameter kAUSoundIsolation_SoundToIsolate.
+ 
+ @constant      kAUSoundIsolationSoundType_Voice
+ Isolate voice signal from the input signal.
+ */
+CF_ENUM(long) {
+    kAUSoundIsolationSoundType_Voice API_AVAILABLE(macos(13.0), ios(16.0)) API_UNAVAILABLE(tvos) API_UNAVAILABLE(watchos) = 1
+};
+
 #pragma mark Apple Specific - Desktop
 
 #if !TARGET_OS_IPHONE
diff -ruN /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h
--- /Applications/Xcode_13.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h	2022-02-23 07:58:08.000000000 -0500
+++ /Applications/Xcode_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h	2022-05-31 14:51:08.000000000 -0400
@@ -1390,7 +1390,7 @@
 	@struct         MIDIEventList
 	@abstract       Forward declaration of MIDIEventList found in <CoreMIDI/MIDIServices.h>
 */
-typedef struct MIDIEventList MIDIEventList;
+struct MIDIEventList;
 
 /*!    @typedef    AUEventSampleTime
 	@brief        Expresses time as a sample count.
@@ -1816,6 +1816,21 @@
 
 #define kAudioUnitConfigurationInfo_SupportedChannelLayoutTags	"SupportedChannelLayoutTags"
 
+/*!
+ @define		kAudioUnitConfigurationInfo_MIDIProtocol
+ @discussion	A signed 32-bit integer representing the audio unit's MIDI protocol. This should be one of the
+				values in the MIDIProtocolID enum (see <CoreMIDI/MIDIServices.h>).
+ */
+
+#define kAudioUnitConfigurationInfo_MIDIProtocol	"MIDIProtocol"
+
+/*!
+ @define		kAudioUnitConfigurationInfo_MigrateFromPlugin
+ @discussion	An array of NSData representing byte encoded AudioUnitOtherPluginDescs to migrate from.
+ */
+
+#define kAudioUnitConfigurationInfo_MigrateFromPlugin	"MigrateFromPlugin"
+
 #pragma mark -
 #pragma mark OS X Availability
 
@@ -2621,7 +2636,7 @@
  */
 CF_ENUM(AudioUnitPropertyID) {
 	kAUVoiceIOProperty_MutedSpeechActivityEventListener = 2106
-} API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, watchos, tvos);
+} API_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, watchos, tvos, macCatalyst);
 
 #pragma mark - AUVoiceProcessing unit deprecated properties
 
Clone this wiki locally