Skip to content

AudioToolbox macOS10.12 Beta2

Vincent Dondain edited this page Jul 6, 2016 · 1 revision

#AudioToolbox.framework

diff -ruN /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h
--- /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h	2016-05-11 16:31:22.000000000 +0200
+++ /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h	2016-06-26 06:32:16.000000000 +0200
@@ -494,7 +494,8 @@
 		
 		AUAudioUnit has an additional pseudo-property, "allParameterValues", on which KVO
 		notifications are issued in response to certain events where potentially all parameter
-		values are invalidated (e.g. selection of a preset or setting fullState).
+		values are invalidated. This includes changes to currentPreset, fullState, and
+		fullStateForDocument.
  
 		Subclassers should implement the parameterTree getter to expose parameters to hosts. They
 		should cache as much as possible and send KVO notifications on "parameterTree" when altering
@@ -745,6 +746,29 @@
 */
 @property (NS_NONATOMIC_IOSONLY, copy, nullable) NSString *contextName;
 
+/*!	@property	supportsMPE
+	@brief		Specifies whether an audio unit supports Multi-dimensional Polyphonic Expression.
+	@discussion
+		Bridged to the v2 property kAudioUnitProperty_SupportsMPE.
+*/
+@property (NS_NONATOMIC_IOSONLY, readonly) BOOL supportsMPE NS_AVAILABLE(10_12, 10_0);
+
+/*!	@property	channelMap
+	@brief		Specify a mapping of input channels to output channels.
+	@discussion
+		Converter and input/output audio units may support re-ordering or splitting of input
+		channels to output channels. The number of channels in the channel map is the number of
+		channels of the destination (output format). The channel map entries contain a channel
+		number of the source channel that should be mapped to that destination channel. If -1 is
+		specified, then that destination channel will not contain any channel from the source (so it
+		will be silent).
+		
+		If the property value is nil, then the audio unit does not support this property.
+ 
+		Bridged to the v2 property kAudioOutputUnitProperty_ChannelMap.
+*/
+@property (NS_NONATOMIC_IOSONLY, copy, nullable) NSArray<NSNumber *> *channelMap NS_AVAILABLE(10_12, 10_0);
+
 @end
 
 // =================================================================================================
diff -ruN /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnitImplementation.h /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnitImplementation.h
--- /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnitImplementation.h	2016-05-25 07:13:54.000000000 +0200
+++ /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnitImplementation.h	2016-06-26 09:02:40.000000000 +0200
@@ -85,6 +85,12 @@
 	if the AU is implemented using AUAudioUnitV2Bridge.
 	See AudioComponent.h.
 
+Note that as of OS X version 10.12, the system has special support for installing both version 2
+(bundle-based) and version 3 (extension) implementations of the same audio unit. When two components
+are registered with the same type/subtype/manufacturer and version, normally the first one found
+is used. But if one is an audio unit extension and the other is not, then the audio unit extension's
+registration "wins", though if an app attempts to open it synchronously, with 
+AudioComponentInstanceNew, then the system will fall back to the version 2 implementation.
 */
 
 #if __OBJC2__
diff -ruN /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h
--- /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h	2016-05-11 16:31:22.000000000 +0200
+++ /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUComponent.h	2016-06-26 06:32:16.000000000 +0200
@@ -1423,6 +1423,34 @@
 												__OSX_AVAILABLE_STARTING(__MAC_10_0,__IPHONE_2_0);
 
 
+/*!
+	@function		AudioUnitExtensionSetComponentList
+	@abstract		Allows the implementor of an audio unit extension to dynamically modify the
+					list of component registrations for the extension.
+	@param			extensionIdentifier
+						The bundle ID of the audio unit extension.
+	@param			audioComponentInfo
+						An array of dictionaries, one for each component, in the same format as
+						described in AudioComponent.h for the Info.plist key "AudioComponents".
+    @result         An OSStatus result code.
+*/
+extern void
+AudioUnitExtensionSetComponentList(CFStringRef extensionIdentifier, CFArrayRef audioComponentInfo)
+                                                __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
+
+/*!
+	@function		AudioUnitExtensionCopyComponentList
+	@abstract		Allows the implementor of an audio unit extension to dynamically modify the
+					list of component registrations for the extension.
+	@param			extensionIdentifier
+						The bundle ID of the audio unit extension.
+	@result			An array of dictionaries, one for each component, in the same format as
+					described in AudioComponent.h for the Info.plist key "AudioComponents".
+					The caller should release this value when done with it.
+*/
+extern CFArrayRef
+AudioUnitExtensionCopyComponentList(CFStringRef extensionIdentifier)
+                                                __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0);
 
 
 
diff -ruN /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUParameters.h /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUParameters.h
--- /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUParameters.h	2016-05-25 06:33:41.000000000 +0200
+++ /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUParameters.h	2016-06-26 07:56:38.000000000 +0200
@@ -256,7 +256,9 @@
 		"LFO.rate.value" refers to that parameter's value.
 
 		An audio unit may choose to dynamically rearrange the tree. When doing so, it must
-		issue a KVO notification on the audio unit's parameterTree property.
+		issue a KVO notification on the audio unit's parameterTree property. The tree's elements are
+		mostly immutable (except for values and implementor hooks); the only way to modify them
+		is to publish a new tree.
 */
 NS_CLASS_AVAILABLE(10_11, 9_0)
 @interface AUParameterTree : AUParameterGroup <NSSecureCoding>
diff -ruN /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h
--- /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h	2016-05-11 16:31:24.000000000 +0200
+++ /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioToolbox.h	2016-06-26 06:32:17.000000000 +0200
@@ -37,12 +37,9 @@
 		#include <AudioToolbox/AudioUnitUtilities.h>
 		#include <AudioToolbox/AUMIDIController.h>
 		#include <AudioToolbox/CoreAudioClock.h>
-		#ifdef __OBJC__
-			#import <AudioToolbox/AUCocoaUIView.h>
-		#endif
 
 	#ifdef __OBJC2__
-		// iOS, OS X 64-bit only
+		// iOS (all architectures), OS X 64-bit only
 		#import <AudioToolbox/AUAudioUnit.h>
 		#import <AudioToolbox/AUAudioUnitImplementation.h>
 		#import <AudioToolbox/AUParameters.h>
diff -ruN /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnit.h /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnit.h
--- /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnit.h	2016-05-11 16:31:24.000000000 +0200
+++ /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnit.h	2016-06-26 06:32:17.000000000 +0200
@@ -27,9 +27,6 @@
 	#endif
 
 		#include <AudioToolbox/AudioCodec.h>
-		#ifdef __OBJC__
-			#import <AudioToolbox/AUCocoaUIView.h>
-		#endif
 
 #else
 	#include <AudioComponent.h>
diff -ruN /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h
--- /Applications/Xcode8-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h	2016-05-11 16:31:24.000000000 +0200
+++ /Applications/Xcode8-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitProperties.h	2016-06-26 06:32:17.000000000 +0200
@@ -151,6 +151,7 @@
 						
 	@constant		kAudioUnitProperty_ParameterInfo
 						Scope:			Any
+						Element:		AudioUnitParameterID of the parameter being queried
 						Value Type:		AudioUnitParameterInfo
 						Access:			Read
 						
@@ -231,6 +232,7 @@
 	
 	@constant		kAudioUnitProperty_ParameterValueStrings
 						Scope:			Any
+						Element:		AudioUnitParameterID of the parameter being queried 
 						Value Type:		CFArrayRef
 						Access:			Read
 						
@@ -400,6 +402,7 @@
 	
 	@constant		kAudioUnitProperty_ParameterIDName
 						Scope:				any
+						Element:			AudioUnitParameterID of the parameter being queried
 						Value Type:			AudioUnitParameterIDName
 						Access:				read
 
@@ -749,6 +752,12 @@
 						parameters, via this property. The size of the array passed to
 						AudioUnitGetProperty controls the number of AudioUnitParameter values
 						returned.
+    @constant       kAudioUnitProperty_SupportsMPE
+                        Scope:          Global
+                        Value Type:     UInt32
+                        Access:         read
+                        
+                        Indicates whether an audio unit supports Multi-dimensional Polyphonic Expression.
 */
 CF_ENUM(AudioUnitPropertyID)
 {
@@ -793,6 +802,7 @@
 	kAudioUnitProperty_ClassInfoFromDocument		= 50,
 	kAudioUnitProperty_RequestViewController		= 56,
 	kAudioUnitProperty_ParametersForOverview		= 57,
+	kAudioUnitProperty_SupportsMPE					= 58,
 
 	kAudioUnitProperty_FastDispatch					= 5,
 	kAudioUnitProperty_SetExternalBuffer			= 15,
@@ -2101,12 +2111,12 @@
 						
 	@constant		kAudioOutputUnitProperty_ChannelMap
 	@discussion			Scope:			Input/Output
-						Value Type:		Array of UInt32
+						Value Type:		Array of SInt32
 						Access:			Read / Write
 
 						This will also work with AUConverter. This property is used to map input channels from an input (source) to a destination.
 						The number of channels represented in the channel map is the number of channels of the destination. The channel map entries
-						contain a channel number of the source that should be mapped to that destination channel. If -1 is specified, than that 
+						contain a channel number of the source that should be mapped to that destination channel. If -1 is specified, then that 
 						destination channel will not contain any channel from the source (so it will be silent)
 						
 	@constant		kAudioOutputUnitProperty_EnableIO
Clone this wiki locally