Skip to content

AudioToolbox macOS xcode14.0 beta2

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_14.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h /Applications/Xcode_14.0.0-beta2.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	2022-05-31 14:51:09.000000000 -0400
+++ /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AUAudioUnit.h	2022-06-17 15:28:13.000000000 -0400
@@ -689,7 +689,10 @@
 		kMIDIProtocol_2_0, incoming events will be translated to MIDI 2.0. If hostMIDIProtocol
 		is not set, events will be delivered as legacy MIDI.
 
-		Note: This block should be preferred over MIDIOutputEventBlock going forward.
+		Note: This block is cross-compatible with Audio Units using MIDIOutputEventBlock and should be
+		preferred over MIDIOutputEventBlock by hosts going forward. The framework will provide the Audio Unit
+		with both a MIDIOutputEventBlock and MIDIOutputEventListBlock, the Audio Unit is free to call either
+		block as all messages will be translated as described above.
  
 		Host should setup in the following order:
 		 - Set hostMIDIProtocol
diff -ruN /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_14.0.0-beta2.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	2022-05-31 15:01:46.000000000 -0400
+++ /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioComponent.h	2022-06-17 15:25:59.000000000 -0400
@@ -659,7 +659,49 @@
 						CFDictionaryRef __nullable		inValidationParameters,
 						AudioComponentValidationResult *outValidationResult)
                                                     API_AVAILABLE(macos(10.7), ios(16.0)) API_UNAVAILABLE(watchos, tvos);
-	
+
+/*!
+	@function		AudioComponentValidateWithResults
+	@abstract		Tests a specified AudioComponent for API and behavioral conformance
+					asynchronously, returning detailed validation results.
+	@discussion		Currently, only AudioUnits can can be validated. The `inCompletionHandler` callback
+					has two parameters, an `AudioComponentValidationResult` with result of the validation,
+					and a `CFDictionaryRef` which contains the details of this result.
+					This dictionary may contain the following entries:
+						"Output"
+							An array of strings, with the same content as if the AU was validated on auval.
+						"Result"
+							An `AudioComponentValidationResult` with the result of the validation
+							process. The same as what's in the `AudioComponentValidationResult`
+							in the `inCompletionHandler` and what `AudioComponentValidate`
+							currently returns.
+						"Tests"
+							An array in which each value is a dictionary and may contain:
+								"Name"
+									A descriptive name of the test.
+								"Result"
+									An `AudioComponentValidationResult` with the result of the
+									specific test.
+								"Output"
+									An array of strings with output generated by the test.
+						"WasCached"
+							`YES` if the returned result was cached from previous runs.
+	@param			inComponent
+						The AudioComponent to validate.
+	@param			inValidationParameters
+						A CFDictionaryRef that contains parameters for the validation operation.
+						Passing NULL for this argument tells the system to use the default
+						parameters.
+	@param			inCompletionHandler
+						Completion callback. See discussion section.
+	@result			an OSStatus result code.
+*/
+extern OSStatus
+AudioComponentValidateWithResults(AudioComponent				inComponent,
+								  CFDictionaryRef __nullable	inValidationParameters,
+								  void 							(^inCompletionHandler)(AudioComponentValidationResult, CFDictionaryRef))
+													API_AVAILABLE(macos(13.0), ios(16.0)) API_UNAVAILABLE(watchos, tvos);
+
 /*!
 	@define		kAudioComponentValidationParameter_TimeOut
 	@discussion This is a number that indicates the time in seconds to wait for a validation
diff -ruN /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_14.0.0-beta2.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	2022-05-31 15:01:45.000000000 -0400
+++ /Applications/Xcode_14.0.0-beta2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/AudioToolbox.framework/Headers/AudioUnitParameters.h	2022-06-17 14:50:15.000000000 -0400
@@ -344,24 +344,27 @@
 		// Global, Cents, -2400 -> 2400, 1.0
 	kNewTimePitchParam_Pitch						= 1,
 	
-		// Overlap is the number of overlapped spectral windows that are used to produce the output.
-		// The value of overlap is directly proportional to CPU cost. More overlaps can make smooth
-		// passages sound smoother. For percussive sound, a lower overlap may be better.
+		// The generated output can be made to sound smoother by increasing
+		// the density of the processing time frames. The value is directly proportional
+	    // to the CPU cost. When slowing down percussive audio, lower values may be better.
 		// Global, generic, 3.0 -> 32.0, 8.0
-	kNewTimePitchParam_Overlap						= 4,
+	kNewTimePitchParam_Smoothness						= 4,
 	
-		// Peak locking enforces phase coherence of spectral peaks.
-		// Peak locking adds some expense but results in a less "phasey"
-		// or reverberant sound, sometimes also called loss of presence.
-		// However the flip side is that it can sound more stuttery for some content.
+	kNewTimePitchParam_Overlap API_DEPRECATED_WITH_REPLACEMENT("kNewTimePitchParam_Smoothness", ios(2.0, 16.0), watchos(2.0, 9.0), tvos(9.0, 16.0), macos(10.0, 13.0)) = kNewTimePitchParam_Smoothness,
+	
+		// Spectral phase coherence is enabled through peak locking.
+		// This adds some computation cost but results in a less "phasey"
+		// or reverberant sound.
 		// Global, Boolean, 0->1, 1
-	kNewTimePitchParam_EnablePeakLocking			= 6,
+	kNewTimePitchParam_EnableSpectralCoherence			= 6,
+	
+	kNewTimePitchParam_EnablePeakLocking API_DEPRECATED_WITH_REPLACEMENT("kNewTimePitchParam_EnableSpectralCoherence", ios(2.0, 16.0), watchos(2.0, 9.0), tvos(9.0, 16.0), macos(10.0, 13.0)) = kNewTimePitchParam_EnableSpectralCoherence,
     
-    // 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
+		// Transient preservation uses group delay to identify transients.
+		// It resets the phase at points of transients to preserve the original
+		// spectral phase relationships. It also sets the stretch factor to 1 at
+		// those points.
+		// Global, Boolean, 0->1, 1
     kNewTimePitchParam_EnableTransientPreservation  = 7
 };
 
Clone this wiki locally