Skip to content

SoundAnalysis watchOS xcode15.3 b1

Alex Soto edited this page Jan 27, 2024 · 1 revision

#SoundAnalysis.framework

diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNAnalyzer.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNAnalyzer.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNAnalyzer.h	2023-11-12 03:07:39
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNAnalyzer.h	2024-01-19 00:02:18
@@ -6,121 +6,120 @@
 //
 
 #import <Foundation/Foundation.h>
-#import <AVFoundation/AVFoundation.h>
+#import <AVFAudio/AVFAudio.h>
 #import <SoundAnalysis/SNDefines.h>
 #import <SoundAnalysis/SNResult.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
-/*!
- @brief Analyzes a stream of audio data and provides analysis results to the client
- @discussion SNAudioStreamAnalyzer should be used to analyze a stream of audio, represented by a sequence of audio buffers over time.
- */
-
+/// Analyzes a stream of audio data and provides analysis results to the client
+///
+/// SNAudioStreamAnalyzer should be used to analyze a stream of audio, represented by a sequence of audio buffers over time.
 SN_EXPORT API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0), visionos(1.0))
 @interface SNAudioStreamAnalyzer : NSObject
 
-/*!
- @brief Creates a new analyzer
- @param format The format of the audio stream to be analyzed. Only PCM formats are supported.
- */
+/// Creates a new analyzer
+///
+/// - Parameter format: The format of the audio stream to be analyzed. Only PCM formats are supported.
 - (instancetype)initWithFormat:(AVAudioFormat *)format NS_DESIGNATED_INITIALIZER;
 
 - (instancetype)init NS_UNAVAILABLE;
 
-/*!
- @brief Adds a new analysis request to the analyzer
- @param request An audio analysis request to be performed on the audio stream
- @param observer The object that will receive the analysis results for the supplied request. The observer is weakly retained by the analyzer.
- @param error On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.
- @return YES if the request was successfully added, and NO otherwise.
- @discussion Requests can be added while analysis is in progress. If the analyzer cannot perform the requested analysis, an error will be returned. For example, an error could be returned if the request requires a stream format that doesn't match the analyzer's stream format.
- */
+/// Adds a new analysis request to the analyzer
+///
+/// - Parameters:
+///
+///   - request: An audio analysis request to be performed on the audio stream
+///
+///   - observer: The object that will receive the analysis results for the supplied request. The observer is weakly retained by the analyzer.
+///
+///   - error: On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.
+///
+/// - Returns: YES if the request was successfully added, and NO otherwise.
+///
+/// Requests can be added while analysis is in progress. If the analyzer cannot perform the requested analysis, an error will be returned. For example, an error could be returned if the request requires a stream format that doesn't match the analyzer's stream format.
 - (BOOL)addRequest:(id<SNRequest>)request withObserver:(id<SNResultsObserving>)observer error:(NSError **)error;
 
-/*!
- @brief Removes an existing analysis request from the analyzer
- @param request An audio analysis request to be removed
- @discussion Requests can be removed while analysis is in progress. Once the removeRequest method returns, the previously registered observer will not receive any more callbacks.
- */
+/// Removes an existing analysis request from the analyzer
+/// - Parameter request: An audio analysis request to be removed
+/// Requests can be removed while analysis is in progress. Once the removeRequest method returns, the previously registered observer will not receive any more callbacks.
 - (void)removeRequest:(id<SNRequest>)request;
 
-/*!
- @brief Removes all requests from the analyzer
- */
+/// Removes all requests from the analyzer
 - (void)removeAllRequests;
 
-/*!
- @brief Provides the next buffer for analysis
- @param audioBuffer The buffer containing the audio to be processed
- @param audioFramePosition The frame position of the data in the buffer
- @discussion The framePosition should be a monotonically increasing sample timestamp. If the sample timeline is detected to be non-continuous, the analyzer's internal state may reset to account for the jump. Some types of audio analysis are performed at a fixed block size, which may differ from the buffer sizes provided for analysis. For this reason, an invocation of analyzeAudioBuffer may cause an analysis request observer to be called zero times, one time, or many times, depending on the relationship between the input buffer size, current analyzer state, and native analysis block size. Any errors produced during analysis will be provided through the request observers. This method may block as a means of indicating backpressure to the caller. These methods are not safe to call from a realtime audio context but may be called from lower priority threads (i.e. AVAudioEngine tap callback or AudioQueue callback).
- */
-- (void)analyzeAudioBuffer:(AVAudioBuffer *)audioBuffer atAudioFramePosition:(AVAudioFramePosition)audioFramePosition;
+/// Provides the next buffer for analysis
+///
+/// - Parameters:
+///
+///   - audioBuffer: The buffer containing the audio to be processed
+///
+///   - audioFramePosition: The frame position of the data in the buffer
+///
+/// The framePosition should be a monotonically increasing sample timestamp. If the sample timeline is detected to be non-continuous, the analyzer's internal state may reset to account for the jump. Some types of audio analysis are performed at a fixed block size, which may differ from the buffer sizes provided for analysis. For this reason, an invocation of analyzeAudioBuffer may cause an analysis request observer to be called zero times, one time, or many times, depending on the relationship between the input buffer size, current analyzer state, and native analysis block size. Any errors produced during analysis will be provided through the request observers. This method may block as a means of indicating backpressure to the caller. These methods are not safe to call from a realtime audio context but may be called from lower priority threads (i.e. AVAudioEngine tap callback or AudioQueue callback).
+ - (void)analyzeAudioBuffer:(AVAudioBuffer *)audioBuffer atAudioFramePosition:(AVAudioFramePosition)audioFramePosition;
 
-/*!
- @brief Indicates that the audio stream has ended, and no more audio buffers will be analyzed
- @discussion After this method has been called, it is invalid to provide any more audio data for analysis, and any provided buffers will be ignored. This method is useful for types of analysis that may have final results to provide upon the completion of the stream.
- */
+/// Indicates that the audio stream has ended, and no more audio buffers will be analyzed
+///
+/// After this method has been called, it is invalid to provide any more audio data for analysis, and any provided buffers will be ignored. This method is useful for types of analysis that may have final results to provide upon the completion of the stream.
 - (void)completeAnalysis;
 
 @end
 
 
-/*!
- @brief Analyzes an audio file and provides analysis results to the client
- */
-
+/// Analyzes an audio file and provides analysis results to the client
 SN_EXPORT API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0), visionos(1.0))
 @interface SNAudioFileAnalyzer : NSObject
 
-/*!
- @brief Creates a new analyzer
- @param url The url for the audio file to be analyzed
- @param error On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.
- */
+/// Creates a new analyzer
+///
+/// - Parameters:
+///
+///   - url: The url for the audio file to be analyzed
+///
+///   - error: On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.
 - (nullable instancetype)initWithURL:(NSURL *)url error:(NSError **)error NS_DESIGNATED_INITIALIZER;
 
 - (instancetype)init NS_UNAVAILABLE;
 
-/*!
- @brief Adds a new analysis request to the analyzer
- @param request An audio analysis request to be performed on the audio stream
- @param observer The object that will receive the analysis results for the supplied request. The observer is weakly retained by the analyzer.
- @param error On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.
- @return YES if the request was successfully added, and NO otherwise.
- @discussion If addRequest is called while the file is being processed, an error will be returned.
- */
+/// Adds a new analysis request to the analyzer
+///
+/// - Parameters:
+///
+///   - request: An audio analysis request to be performed on the audio stream
+///
+///   - observer: The object that will receive the analysis results for the supplied request. The observer is weakly retained by the analyzer.
+///
+///   - error On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.
+///
+/// - Returns: YES if the request was successfully added, and NO otherwise.
+///
+/// If addRequest is called while the file is being processed, an error will be returned.
 - (BOOL)addRequest:(id<SNRequest>)request withObserver:(id<SNResultsObserving>)observer error:(NSError **)error;
 
-/*!
- @brief Removes an existing analysis request from the analyzer
- @param request An audio analysis request to be removed
- @discussion Requests can be removed while analysis is in progress. Once the removeRequest method returns, the previously registered observer will not receive any more callbacks.
- */
+/// Removes an existing analysis request from the analyzer
+///
+/// - Parameter request: An audio analysis request to be removed
+///
+/// Requests can be removed while analysis is in progress. Once the removeRequest method returns, the previously registered observer will not receive any more callbacks.
 - (void)removeRequest:(id<SNRequest>)request;
 
-/*!
- @brief Removes all requests from the analyzer
- */
+/// Removes all requests from the analyzer
 - (void)removeAllRequests;
 
-/*!
- @brief Analyzes the audio file synchronously
- @discussion This function executes synchronously. Any errors produced during analysis will flow downstream to the request observers. This method may block for a long period of time, so be careful to ensure this call does not block UI or other important tasks.
- */
+/// Analyzes the audio file synchronously
+///
+/// This function executes synchronously. Any errors produced during analysis will flow downstream to the request observers. This method may block for a long period of time, so be careful to ensure this call does not block UI or other important tasks.
 - (void)analyze;
 
-/*!
- @brief Analyzes the audio file asynchronously
- @discussion This function executes asynchronously, calling the completion after the entire file has completed analysis. Any errors produced during analysis will flow downstream to the request observers. If the cancelAnalysis method is called, the completionHandler will still be called, but with didReachEndOfFile set to NO.
- */
+/// Analyzes the audio file asynchronously
+///
+/// This function executes asynchronously, calling the completion after the entire file has completed analysis. Any errors produced during analysis will flow downstream to the request observers. If the cancelAnalysis method is called, the completionHandler will still be called, but with didReachEndOfFile set to NO.
 - (void)analyzeWithCompletionHandler:(void (^)(BOOL didReachEndOfFile))completionHandler;
 
-/*!
- @brief Cancels any in-progress analysis of the audio file
- @discussion This function executes asynchronously, and will trigger the completion handler provided in the analyzeWithCompletionHandler method after the cancellation is complete.
- */
+/// Cancels any in-progress analysis of the audio file
+///
+/// This function executes asynchronously, and will trigger the completion handler provided in the analyzeWithCompletionHandler method after the cancellation is complete.
 - (void)cancelAnalysis;
 
 @end
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNClassificationResult.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNClassificationResult.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNClassificationResult.h	2023-11-12 03:40:56
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNClassificationResult.h	2024-01-19 00:02:18
@@ -13,20 +13,14 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-/*!
- @brief The likelihood of a sound belonging to identified class
- */
+/// The likelihood of a sound belonging to identified class
 SN_EXPORT API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0), visionos(1.0))
 @interface SNClassification : NSObject
 
-/*!
- @brief The identifier of a classification request. An example classification could be a string like 'laughter' or 'applause'. The string is defined in the model that was used for the classification. Usually these are technical labels that are not localized and not meant to be used directly to be presented to an end user in the UI.
- */
+/// The identifier of a classification request. An example classification could be a string like 'laughter' or 'applause'. The string is defined in the model that was used for the classification. Usually these are technical labels that are not localized and not meant to be used directly to be presented to an end user in the UI.
 @property (readonly, copy) NSString *identifier;
 
-/*!
- @brief The level of confidence normalized to [0, 1], where 1 is most confident
- */
+/// The level of confidence normalized to [0, 1], where 1 is most confident
 @property (readonly, assign) double confidence;
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -34,31 +28,26 @@
 
 @end
 
-/*!
- @brief A result containing the most likely classification candidates in the time range specified
- */
+/// A result containing the most likely classification candidates in the time range specified
 SN_EXPORT API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0), visionos(1.0))
 @interface SNClassificationResult : NSObject <SNResult>
 
-/*!
- @brief All classification candidates, sorted with highest confidence first.
- */
+/// All classification candidates, sorted with highest confidence first.
 @property (readonly, copy) NSArray<SNClassification *> *classifications;
 
-/*!
- @brief The time range in the client-provided audio stream to which this classification result corresponds
- @discussion Each CMTime contains of a value (audio frame count) and timescale (client sample rate). This enables the client to precisely identify the frame range in the original audio stream to which this result corresponds. Time ranges will often be in the past compared to the frame count of the most recent audio buffer provided to the analyzer, due to the inherent audio buffering operations required to deliver a full block of audio to an MLModel.
- */
+/// The time range in the client-provided audio stream to which this classification result corresponds
+///
+/// Each CMTime contains of a value (audio frame count) and timescale (client sample rate). This enables the client to precisely identify the frame range in the original audio stream to which this result corresponds. Time ranges will often be in the past compared to the frame count of the most recent audio buffer provided to the analyzer, due to the inherent audio buffering operations required to deliver a full block of audio to an MLModel.
 @property (readonly) CMTimeRange timeRange;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
 
-/*!
- @brief Retrieves the classification candidate with the specified identifier.
- @param identifier An identifier on which to query for a particular classification candidate. The query will match to any classification candidate whose `identifier` property (see `identifier` property of `SNClassification`) contains a value equal to the provided argument.
- @result The classification candidate which has the specified identifier, if it exists. If no such candidate exists, `nil` will be returned.
- */
+/// Retrieves the classification candidate with the specified identifier.
+///
+/// - Parameter identifier: An identifier on which to query for a particular classification candidate. The query will match to any classification candidate whose `identifier` property (see `identifier` property of `SNClassification`) contains a value equal to the provided argument.
+///
+/// - Returns: The classification candidate which has the specified identifier, if it exists. If no such candidate exists, `nil` will be returned.
 - (nullable SNClassification *)classificationForIdentifier:(NSString *)identifier
     API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNClassifySoundRequest.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNClassifySoundRequest.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNClassifySoundRequest.h	2023-11-12 11:07:00
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNClassifySoundRequest.h	2024-01-18 23:24:39
@@ -17,51 +17,50 @@
 
 @class SNTimeDurationConstraint;
 
-/*!
- @brief Configure an analyzer to perform sound classification using the provided MLModel.
- @discussion When a new classification result is produced, the results observer will be called with an SNClassificationResult. Audio buffers provided to SNAudioStreamAnalyzer may vary in size, and the analyzer will reblock the audio data to the block size expected by the MLModel. By default, analysis will occur on the first audio channel in the audio stream, and the analyzer will apply sample rate conversion if the provided audio does not match the sample rate required by the MLModel.
- */
+/// Configure an analyzer to perform sound classification using the provided MLModel.
+///
+/// When a new classification result is produced, the results observer will be called with an SNClassificationResult. Audio buffers provided to SNAudioStreamAnalyzer may vary in size, and the analyzer will reblock the audio data to the block size expected by the MLModel. By default, analysis will occur on the first audio channel in the audio stream, and the analyzer will apply sample rate conversion if the provided audio does not match the sample rate required by the MLModel.
 SN_EXPORT API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0), visionos(1.0))
 @interface SNClassifySoundRequest : NSObject <SNRequest>
 
-/*!
- @brief The overlap factor of the windows of audio data provided to the classifier, if the model operates on fixed audio block sizes.
- @discussion When performing audio analysis on fixed audio block sizes, it is common for the analysis windows to overlap by some factor. Without overlapping the analysis windows (when the overlap factor is 0.0), a sound might be split across two analysis windows, which could negatively affect classification performance. Overlapping the analysis windows by 50% ensures each sound will fall near the center of at least one analysis window. The supported range is [0.0, 1.0), and the default value is 0.5. Increasing the overlap factor increases computational complexity, so values greater than 0.5 should be used with care.
- */
+/// The overlap factor of the windows of audio data provided to the classifier, if the model operates on fixed audio block sizes.
+///
+/// When performing audio analysis on fixed audio block sizes, it is common for the analysis windows to overlap by some factor. Without overlapping the analysis windows (when the overlap factor is 0.0), a sound might be split across two analysis windows, which could negatively affect classification performance. Overlapping the analysis windows by 50% ensures each sound will fall near the center of at least one analysis window. The supported range is [0.0, 1.0), and the default value is 0.5. Increasing the overlap factor increases computational complexity, so values greater than 0.5 should be used with care.
 @property (readwrite, assign) double overlapFactor;
 
-/*!
- @brief The duration of a single analysis window.
- @discussion When performing classification over an audio stream, a classifier computes each classification result based on a single 'analysis window' of audio. Analysis windows are uniformly-sized time intervals, where the size of any given window is considered that window's 'duration'. Some classifiers can operate over analysis windows which conform to one of several different duration options. Larger window durations allow classification to execute less frequently over larger contexts of audio, potentially improving classification performance. Smaller window durations allow classification to execute more frequently over smaller contexts of audio, producing results with sharper time resolution. Depending on the use-case, a larger or smaller window may be preferrable. When configuring the window duration, it is important to respect the capabilities of the classifier. A classifier's supported window durations can be discovered using the `windowDurationConstraint` property. If an unsupported window duration is selected, the window duration will be automatically rounded down to the nearest supported value if possible, else rounded up.
- */
+/// The duration of a single analysis window.
+///
+/// When performing classification over an audio stream, a classifier computes each classification result based on a single 'analysis window' of audio. Analysis windows are uniformly-sized time intervals, where the size of any given window is considered that window's 'duration'. Some classifiers can operate over analysis windows which conform to one of several different duration options. Larger window durations allow classification to execute less frequently over larger contexts of audio, potentially improving classification performance. Smaller window durations allow classification to execute more frequently over smaller contexts of audio, producing results with sharper time resolution. Depending on the use-case, a larger or smaller window may be preferrable. When configuring the window duration, it is important to respect the capabilities of the classifier. A classifier's supported window durations can be discovered using the `windowDurationConstraint` property. If an unsupported window duration is selected, the window duration will be automatically rounded down to the nearest supported value if possible, else rounded up.
 @property (readwrite, assign) CMTime windowDuration API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
-/*!
- @brief The constraints governing permitted analysis window durations.
- @discussion The analysis window duration is controlled using the `windowDuration` property. If an analysis window duration is selected which does not meet the necessary constraints, it will automatically be adjusted to meet these constraints (see `windowDuration` for more information regarding how this adjustment will be applied).
- */
+/// The constraints governing permitted analysis window durations.
+///
+/// The analysis window duration is controlled using the `windowDuration` property. If an analysis window duration is selected which does not meet the necessary constraints, it will automatically be adjusted to meet these constraints (see `windowDuration` for more information regarding how this adjustment will be applied).
 @property (readonly, strong) SNTimeDurationConstraint *windowDurationConstraint NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
-/*!
- @brief Lists all labels that can be produced by this request.
- @return An array of strings containing all sound identifiers which can be produced by this request.
- */
+/// Lists all labels that can be produced by this request.
+///
+/// - Returns: An array of strings containing all sound identifiers which can be produced by this request.
 @property (readonly, copy) NSArray<NSString *> *knownClassifications API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
-/*!
- @brief Initializes a sound classification request with the provided MLModel
- @param mlModel The CoreML audio classification model to be used with this request
- @discussion The provided model must accept audio data as input, and output a classification dictionary containing the probability of each category.
- */
+/// Initializes a sound classification request with the provided MLModel
+///
+/// - Parameter mlModel: The CoreML audio classification model to be used with this request
+///
+/// The provided model must accept audio data as input, and output a classification dictionary containing the probability of each category.
 - (nullable instancetype)initWithMLModel:(MLModel *)mlModel error:(NSError **)error;
 
-/*!
- @brief Initializes a sound classification request with a known classifier.
- @param classifierIdentifier An identifier identifying the particular classifier to use for labeling sounds.
- @param error An output parameter which, in the case of an error, will be populated with details about that error. Upon success, the contents of this output parameter are undefined. Please use the return value of this method to determine whether or not an error occurred before using the value assigned to this output parameter.
- @return Upon failure, `nil`; upon success, an `SNClassifySoundRequest` instance which can be added to an analyzer to classify sounds using a recognized classifier.
- @discussion This initializer may be used to classify sounds using Apple-provided sound classifiers. Note that Apple may add new classifiers in the future, but it commits to ensuring the consistent performance of existing classifiers.
- */
+/// Initializes a sound classification request with a known classifier.
+///
+/// - Parameters:
+///
+///   - classifierIdentifier: An identifier identifying the particular classifier to use for labeling sounds.
+///
+///   - error: An output parameter which, in the case of an error, will be populated with details about that error. Upon success, the contents of this output parameter are undefined. Please use the return value of this method to determine whether or not an error occurred before using the value assigned to this output parameter.
+///
+/// - Returns Upon failure, `nil`; upon success, an `SNClassifySoundRequest` instance which can be added to an analyzer to classify sounds using a recognized classifier.
+///
+/// This initializer may be used to classify sounds using Apple-provided sound classifiers. Note that Apple may add new classifiers in the future, but it commits to ensuring the consistent performance of existing classifiers.
 - (nullable instancetype)initWithClassifierIdentifier:(SNClassifierIdentifier)classifierIdentifier
                                                 error:(NSError **)error
     API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNRequest.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNRequest.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNRequest.h	2023-11-12 03:40:55
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNRequest.h	2024-01-19 00:02:18
@@ -8,10 +8,9 @@
 #import <Foundation/Foundation.h>
 #import <SoundAnalysis/SNDefines.h>
 
-/*!
- @brief The base protocol to which analysis requests conform
- @discussion An analysis request is a configuration that defines the analysis the client wishes to perform on the audio stream. Each request has a corresponding result type, which contains information describing the analysis results. This protocol is designed for all requests provided by the framework to conform to, and shouldn't be conformed to by client objects.
- */
+/// The base protocol to which analysis requests conform
+///
+/// An analysis request is a configuration that defines the analysis the client wishes to perform on the audio stream. Each request has a corresponding result type, which contains information describing the analysis results. This protocol is designed for all requests provided by the framework to conform to, and shouldn't be conformed to by client objects.
 SN_EXPORT API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0), visionos(1.0))
 @protocol SNRequest <NSObject>
 @end
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNResult.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNResult.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNResult.h	2023-11-12 03:40:55
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNResult.h	2024-01-19 00:02:18
@@ -5,41 +5,34 @@
 //  Copyright © 2019 Apple. All rights reserved.
 //
 
-#import <AVFoundation/AVFoundation.h>
+#import <AVFAudio/AVFAudio.h>
 #import <SoundAnalysis/SNDefines.h>
 #import <SoundAnalysis/SNRequest.h>
 
 NS_ASSUME_NONNULL_BEGIN
 
-/*!
- @brief The base protocol to which analysis results conform
- */
+/// The base protocol to which analysis results conform
 SN_EXPORT API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0), visionos(1.0))
 @protocol SNResult <NSObject>
 @end
 
-/*!
- @brief The interface through which clients receive the results of an analysis request
- */
+/// The interface through which clients receive the results of an analysis request
 SN_EXPORT API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0), visionos(1.0))
 @protocol SNResultsObserving <NSObject>
-/*!
- @brief Provides a new analysis result to the client with the specified time range
- @discussion This function will be called each time a new analysis result is available. Different types of analysis may produce results at different rates, spanning different time ranges.
- */
+/// Provides a new analysis result to the client with the specified time range
+///
+/// This function will be called each time a new analysis result is available. Different types of analysis may produce results at different rates, spanning different time ranges.
 - (void)request:(id<SNRequest>)request didProduceResult:(id<SNResult>)result;
 
 @optional
-/*!
- @brief Informs the client of an error produced during analysis
- @discussion If an error is produced by a request, that request will not produce any more results, and is in a terminal state. The request:didFailWithError and requestDidComplete methods are mutually exclusive.
- */
+/// Informs the client of an error produced during analysis
+///
+///If an error is produced by a request, that request will not produce any more results, and is in a terminal state. The request:didFailWithError and requestDidComplete methods are mutually exclusive.
 - (void)request:(id<SNRequest>)request didFailWithError:(NSError *)error;
 
-/*!
- @brief Informs the client that the analysis request was completed normally
- @discussion If an analysis request completes normally, that request will not produce any more results, and is in a terminal state. The request:didFailWithError and requestDidComplete methods are mutually exclusive.
- */
+/// Informs the client that the analysis request was completed normally
+///
+/// If an analysis request completes normally, that request will not produce any more results, and is in a terminal state. The request:didFailWithError and requestDidComplete methods are mutually exclusive.
 - (void)requestDidComplete:(id<SNRequest>)request;
 
 @end
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNTimeDurationConstraint.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNTimeDurationConstraint.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNTimeDurationConstraint.h	2023-11-12 03:28:05
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNTimeDurationConstraint.h	2024-01-19 01:54:26
@@ -11,62 +11,56 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-/*!
- @brief Enumerates possible types for `SNTimeDurationConstraint`.
- */
+/// Enumerates possible types for `SNTimeDurationConstraint`.
 typedef NS_ENUM(NSInteger, SNTimeDurationConstraintType) {
-	/*!
-	 @brief An 'enumerated' constraint type.
-	 @discussion In order for a duration to satisfy a constraint of this type, it must be a member of a particular set of discrete permissible values.
-	 */
+    /// An 'enumerated' constraint type.
+    ///
+    /// In order for a duration to satisfy a constraint of this type, it must be a member of a particular set of discrete permissible values.
 	SNTimeDurationConstraintTypeEnumerated = 1,
 
-	/*!
-	 @brief A 'range' constraint type.
-	 @discussion In order for a duration to satisfy a constraint of this type, it must be a member of a particular continuous range of permissible values.
-	 */
+    /// A 'range' constraint type.
+    ///
+    /// In order for a duration to satisfy a constraint of this type, it must be a member of a particular continuous range of permissible values.
 	SNTimeDurationConstraintTypeRange = 2,
 } NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
-/*!
- @brief Constrains CMTime durations to a subset of legal values.
- @discussion `SNTimeDurationConstraint` is a union type, which, based on the value of its `type` property, may assume one of several forms. Instance properties may be used to extract information from an object, but certain properties are only valid to exercise under certain circumstances. Before accessing a particular property, refer to its documentation to understand what `type` value is required in order for that property to be valid.
- */
+/// Constrains CMTime durations to a subset of legal values.
+///
+/// `SNTimeDurationConstraint` is a union type, which, based on the value of its `type` property, may assume one of several forms. Instance properties may be used to extract information from an object, but certain properties are only valid to exercise under certain circumstances. Before accessing a particular property, refer to its documentation to understand what `type` value is required in order for that property to be valid.
 SN_EXPORT NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0))
 @interface SNTimeDurationConstraint : NSObject
 
-/*!
- @brief The time constraint type.
- @discussion The value of this property dictates whether or not other properties associated with this class can be validly accessed. Please refer to the documentation of other individual properties to understand their relationship to this one. This property is always valid to access.
- */
+/// The time constraint type.
+///
+/// The value of this property dictates whether or not other properties associated with this class can be validly accessed. Please refer to the documentation of other individual properties to understand their relationship to this one. This property is always valid to access.
 @property (readonly, assign) SNTimeDurationConstraintType type;
 
-/*!
- @brief If the constraint type is enumerated, then the set of discrete allowable time durations.
- @return If the constraint type is enumerated, an array of CMTime structures (boxed in NSValue instances) representing the set of allowable time durations. The durations will always be provided sorted in order of ascending time. If the constraint type is not enumerated, an empty array will be returned.
- @discussion The `type` property should be queried before this property is accessed. This property will only yield meaningful values if the constraint type is considered to be 'enumerated'. The constraint type is considered to be 'enumerated' if the `type` property is equal to `SNTimeDurationConstraintTypeEnumerated`.
- */
+/// If the constraint type is enumerated, then the set of discrete allowable time durations.
+///
+/// - Returns: If the constraint type is enumerated, an array of CMTime structures (boxed in NSValue instances) representing the set of allowable time durations. The durations will always be provided sorted in order of ascending time. If the constraint type is not enumerated, an empty array will be returned.
+///
+/// The `type` property should be queried before this property is accessed. This property will only yield meaningful values if the constraint type is considered to be 'enumerated'. The constraint type is considered to be 'enumerated' if the `type` property is equal to `SNTimeDurationConstraintTypeEnumerated`.
 @property (readonly, strong) NSArray<NSValue *> *enumeratedDurations;
 
-/*!
- @brief If the constraint type is range, then the range of allowable window durations.
- @return If the constraint type is range, a CMTimeRange representing the range of allowable window durations. If the constraint type is not range, `kCMTimeRangeInvalid`.
- @discussion The `type` property should be queried before this property is accessed. This property will only yield meaningful values if the constraint type is considered to be 'range'. The constraint type is considered to be 'range' if the `type` property is equal to `SNTimeDurationConstraintTypeRange`.
- */
+/// If the constraint type is range, then the range of allowable window durations.
+///
+/// - Returns: If the constraint type is range, a CMTimeRange representing the range of allowable window durations. If the constraint type is not range, `kCMTimeRangeInvalid`.
+///
+/// The `type` property should be queried before this property is accessed. This property will only yield meaningful values if the constraint type is considered to be 'range'. The constraint type is considered to be 'range' if the `type` property is equal to `SNTimeDurationConstraintTypeRange`.
 @property (readonly, assign) CMTimeRange durationRange;
 
-/*!
- @brief Initializes an enumerated-type constraint.
- @param enumeratedDurations A discrete set of duration values (represented as CMTime values boxed in NSValue instances) permitted by this constraint.
- @return An instance whose `type` is `SNTimeDurationConstraintTypeEnumerated`, and which constrains duration values to the provided set of discrete values.
- */
+/// Initializes an enumerated-type constraint.
+///
+/// - Parameter enumeratedDurations: A discrete set of duration values (represented as CMTime values boxed in NSValue instances) permitted by this constraint.
+///
+/// - Returns: An instance whose `type` is `SNTimeDurationConstraintTypeEnumerated`, and which constrains duration values to the provided set of discrete values.
 - (instancetype)initWithEnumeratedDurations:(NSArray<NSValue *> *)enumeratedDurations;
 
-/*!
- @brief Initializes a range-type constraint.
- @param durationRange A continuous range of duration values (represented as CMTime values) permitted by this constraint.
- @return An instance whose `type` is `SNTimeDurationConstraintTypeRange`, and which constrains durations values to the provided range.
- */
+/// Initializes a range-type constraint.
+///
+/// - Parameter durationRange: A continuous range of duration values (represented as CMTime values) permitted by this constraint.
+///
+/// - Returns: An instance whose `type` is `SNTimeDurationConstraintTypeRange`, and which constrains durations values to the provided range.
 - (instancetype)initWithDurationRange:(CMTimeRange)durationRange;
 
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNTypes.h /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNTypes.h
--- /Applications/Xcode_15.2.0.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNTypes.h	2023-11-12 03:40:56
+++ /Applications/Xcode_15.3.0-beta.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/SoundAnalysis.framework/Headers/SNTypes.h	2024-01-19 00:02:18
@@ -8,14 +8,10 @@
 #import <Foundation/Foundation.h>
 #import <SoundAnalysis/SNDefines.h>
 
-/*!
- @brief Identifiers denoting particular recognized sound classifiers.
- */
+/// Identifiers denoting particular recognized sound classifiers.
 typedef NSString *SNClassifierIdentifier NS_TYPED_ENUM API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
-/*!
- @brief Denotes the first edition of the Apple-provided sound classifier.
- */
+/// Denotes the first edition of the Apple-provided sound classifier.
 SN_EXPORT SNClassifierIdentifier const SNClassifierIdentifierVersion1 API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0), visionos(1.0));
 
 
Clone this wiki locally