### start: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Starts the audio engine. ```APIDOC ## - (BOOL) start:(NSError **)error ### Description Start audio engine. ### Parameters - **error** (NSError **) - On output, if not NULL, the error ### Returns - YES on success, NO on failure ``` -------------------------------- ### Start the Audio Engine Source: https://theamazingaudioengine.com/doc/_getting-_started.html Start the audio controller and handle potential errors during initialization. ```objective-c NSError *error = NULL; BOOL result = [_audioController start:&error]; if ( !result ) { // Report error } ``` -------------------------------- ### Install CocoaPods Dependencies Source: https://theamazingaudioengine.com/doc/_getting-_started.html Run this command in your terminal to install the specified pods. ```bash pod install ``` -------------------------------- ### Synchronous Audio File Loading Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_file_loader_operation.html Demonstrates how to load an audio file synchronously by manually starting the operation and checking for errors. ```objective-c AEAudioFileLoaderOperation *operation = [[AEAudioFileLoaderOperation alloc] initWithFileURL:url targetAudioDescription:audioDescription]; [operation start]; if ( operation.error ) { // Load failed! Clean up, report error, etc. } else { // Load finished - grab the audio _bufferList = operation.bufferList; _lengthInFrames = operation.lengthInFrames; } [operation release]; // If not using ARC ``` -------------------------------- ### prepareRecordingToFileAtPath: Source: https://theamazingaudioengine.com/doc/interface_a_e_recorder.html Prepares the recorder to record to a file at the specified path without starting immediately. ```APIDOC ## - (BOOL) prepareRecordingToFileAtPath:(NSString *)path fileType:(AudioFileTypeID)fileType error:(NSError **)error ### Description Prepare recording and set up internal data structures. When this method returns, the recorder is ready to record. ### Parameters - **path** (NSString *) - Required - The path to record to. - **fileType** (AudioFileTypeID) - Required - The kind of file to create. - **error** (NSError **) - Optional - The error, if not NULL and if an error occurs. ### Returns - **BOOL** - YES on success, NO on failure. ``` -------------------------------- ### AEAudioController Lifecycle Source: https://theamazingaudioengine.com/doc/_a_e_audio_controller_8h_source.html Methods to start and stop the audio engine and update configuration settings. ```APIDOC ## -start: ### Description Starts the audio engine. Returns YES on success, or NO if an error occurred. ### Method Objective-C Instance Method ### Parameters - **error** (NSError**) - Optional - Pointer to an error object if the operation fails. ## -stop ### Description Stops the audio engine. ``` -------------------------------- ### AERecorderStartRecording Source: https://theamazingaudioengine.com/doc/interface_a_e_recorder.html Starts the recording process for a prepared recorder. ```APIDOC ## - (void) AERecorderStartRecording:(AERecorder *)recorder ### Description If you prepared recording by calling prepareRecordingToFileAtPath:fileType:error:, call this method to actually begin recording. This is thread-safe and can be used from the audio thread. ### Parameters - **recorder** (AERecorder *) - Required - The recorder instance. ``` -------------------------------- ### startPolling Source: https://theamazingaudioengine.com/doc/interface_a_e_message_queue.html Starts polling for messages from the realtime thread to the main thread. ```APIDOC ## - (void)startPolling ### Description Start polling for messages from realtime thread to main thread. This must be active for freeing up message resources. ``` -------------------------------- ### Convert audio formats using AEFloatConverter Source: https://theamazingaudioengine.com/doc/_other-_facilities.html Example of setting up a scratch buffer and using AEFloatConverter to convert audio data to a floating-point format for processing. ```Objective-C static const int kScratchBufferSize[4096]; AudioBufferList *scratchBufferList = AEAudioBufferListCreate(AEAudioStreamBasicDescriptionNonInterleavedFloatStereo, kScratchBufferSize); ... self.floatConverter = [[AEFloatConverter alloc] initWithSourceFormat:_audioController.audioDescription]; ... AEFloatConverterToFloatBufferList(THIS->_floatConverter, audio, THIS->_scratchBufferList, frames); // Now process the floating-point audio in 'scratchBufferList'. ``` -------------------------------- ### Engine Control Methods Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Methods to start and stop the audio engine. ```APIDOC ### - start: - (BOOL)start:(NSError **)error ### - stop - (void)stop ``` -------------------------------- ### Recording Audio Input and Output Source: https://theamazingaudioengine.com/doc/_receiving-_audio.html Demonstrates initializing an AERecorder, starting a recording session, and adding it as a receiver for both input and output. ```objective-c - (void)beginRecording { // Init recorder self.recorder = [[AERecorder alloc] initWithAudioController:_audioController]; NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *filePath = [documentsFolder stringByAppendingPathComponent:@"Recording.aiff"]; // Start the recording process NSError *error = NULL; if ( ![_recorder beginRecordingToFileAtPath:filePath fileType:kAudioFileAIFFType error:&error] ) { // Report error return; } // Receive both audio input and audio output. Note that if you're using // AEPlaythroughChannel, mentioned above, you may not need to receive the input again. [_audioController addInputReceiver:_recorder]; [_audioController addOutputReceiver:_recorder]; } ``` -------------------------------- ### Manage Audio Unit Parameters Source: https://theamazingaudioengine.com/doc/_a_e_audio_unit_channel_8h_source.html Methods to get and set parameter values for the audio unit. ```objective-c - (double)getParameterValueForId:(AudioUnitParameterID)parameterId; ``` ```objective-c - (void)setParameterValue:(double)value forId:(AudioUnitParameterID)parameterId; ``` -------------------------------- ### panForSource: Source: https://theamazingaudioengine.com/doc/interface_a_e_mixer_buffer.html Get the pan for a specific audio source. ```APIDOC ## float panForSource:(AEMixerBufferSource)source ### Description Get pan for source. ``` -------------------------------- ### AEAudioFileWriter Class Source: https://theamazingaudioengine.com/doc/_a_e_audio_file_writer_8h_source.html The AEAudioFileWriter class allows for writing audio data to disk. It supports initializing with specific audio descriptions and provides methods to start and finish the writing process. ```APIDOC ## AEAudioFileWriter ### Description Provides functionality to write audio data to a file path. ### Methods - `+ (BOOL)AACEncodingAvailable;` - Checks if AAC encoding is available. - `- (id)initWithAudioDescription:(AudioStreamBasicDescription)audioDescription;` - Initializes the writer with a specific audio format. - `- (BOOL)beginWritingToFileAtPath:(NSString*)path fileType:(AudioFileTypeID)fileType error:(NSError**)error;` - Starts writing to a file. - `- (void)finishWriting;` - Finalizes the file writing process. ### Functions - `OSStatus AEAudioFileWriterAddAudio(AEAudioFileWriter* writer, AudioBufferList *bufferList, UInt32 lengthInFrames);` - Adds audio data to the writer. - `OSStatus AEAudioFileWriterAddAudioSynchronously(AEAudioFileWriter* writer, AudioBufferList *bufferList, UInt32 lengthInFrames);` - Adds audio data synchronously. ``` -------------------------------- ### inputAveragePowerLevel:peakHoldLevel: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Get input power level information since this method was last called. ```APIDOC ## - (void) inputAveragePowerLevel:(Float32 *)averagePower peakHoldLevel:(Float32 *)peakLevel ### Description Get input power level information since this method was last called. ### Parameters - **averagePower** (Float32 *) - On output will be set to the average power level of the most recent input audio, in decibels. - **peakLevel** (Float32 *) - On output will be set to the peak level of the most recent input audio, in decibels. ``` -------------------------------- ### averagePowerLevel:peakHoldLevel:forGroup: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Get output power level information for a particular group, since this method was last called. ```APIDOC ## - (void) averagePowerLevel:(Float32 *)averagePower peakHoldLevel:(Float32 *)peakLevel forGroup:(AEChannelGroupRef)group ### Description Get output power level information for a particular group, since this method was last called. ### Parameters - **averagePower** (Float32 *) - On output will be set to the average power level of the most recent audio, in decibels. - **peakLevel** (Float32 *) - On output will be set to the peak level of the most recent audio, in decibels. - **group** (AEChannelGroupRef) - The channel group. ``` -------------------------------- ### inputAveragePowerLevels:peakHoldLevels:channelCount: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Get input power level information for multiple channels since this method was last called. ```APIDOC ## - (void) inputAveragePowerLevels:(Float32 *)averagePowers peakHoldLevels:(Float32 *)peakLevels channelCount:(UInt32)count ### Description Get input power level information for multiple channels since this method was last called. ### Parameters - **averagePowers** (Float32 *) - On output will be set to the average power level of the most recent input audio, in decibels. - **peakLevels** (Float32 *) - On output will be set to the peak level of the most recent input audio, in decibels. - **count** (UInt32) - The number of channels. ``` -------------------------------- ### averagePowerLevels:peakHoldLevels:forGroup:channelCount: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Get output power level information for a particular group, since this method was last called. ```APIDOC ## - (void) averagePowerLevels:(Float32 *)averagePowers peakHoldLevels:(Float32 *)peakLevels forGroup:(AEChannelGroupRef)group channelCount:(UInt32)count ### Description Get output power level information for a particular group, since this method was last called. ### Parameters - **averagePowers** (Float32 *) - Each element of the array on output will be set to the average power level of the most recent audio for each channel, in decibels. - **peakLevels** (Float32 *) - Each element of the array on output will be set to the peak level of the most recent audio for each channel, in decibels. - **group** (AEChannelGroupRef) - The channel group. - **count** (UInt32) - Specifies the number of channels to fill in the averagePowers and peakLevels array parameters. ``` -------------------------------- ### outputAveragePowerLevels:peakHoldLevels:channelCount: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Get output power level information for multiple channels since this method was last called. ```APIDOC ## - (void) outputAveragePowerLevels:(Float32 *)averagePowers peakHoldLevels:(Float32 *)peakLevels channelCount:(UInt32)count ### Description Get output power level information for multiple channels since this method was last called. ### Parameters - **averagePowers** (Float32 *) - Each element of the array on output will be set to the average power level of the most recent output audio for each channel up to count, in decibels. - **peakLevels** (Float32 *) - Each element of the array on output will be set to the peak level of the most recent output audio for each channel up to count, in decibels. - **count** (UInt32) - Specifies the number of channels to fill in the averagePowers and peakLevels array parameters. ``` -------------------------------- ### initWithAudioDescription:options: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Initializes the audio controller system with a provided audio description and configuration options. ```APIDOC ## - initWithAudioDescription:(AudioStreamBasicDescription)audioDescription options:(AEAudioControllerOptions)options ### Description Initialize the audio controller system, with the audio description you provide. Creates and configures the audio unit and initial mixer audio unit. ``` -------------------------------- ### initWithAudioDescription:inputEnabled:useVoiceProcessing:outputEnabled: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Initializes the audio controller system with the specified audio description and configuration settings. ```APIDOC ## - (id) initWithAudioDescription:(AudioStreamBasicDescription)audioDescription inputEnabled:(BOOL)enableInput useVoiceProcessing:(BOOL)useVoiceProcessing outputEnabled:(BOOL)enableOutput ### Description Initializes the audio controller system, with the audio description you provide. Creates and configures the input/output audio unit and initial mixer audio unit. ### Parameters - **audioDescription** (AudioStreamBasicDescription) - Audio description to use for all audio - **enableInput** (BOOL) - Whether to enable audio input from the microphone or another input device - **useVoiceProcessing** (BOOL) - Whether to use the voice processing unit - **enableOutput** (BOOL) - Whether to enable audio output. ``` -------------------------------- ### initWithAudioDescription: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Initializes the audio controller system with a provided audio description. ```APIDOC ## - initWithAudioDescription:(AudioStreamBasicDescription)audioDescription ### Description Initialize the audio controller system, with the audio description you provide. Creates and configures the audio unit and initial mixer audio unit. ``` -------------------------------- ### beginRecordingToFileAtPath: Source: https://theamazingaudioengine.com/doc/interface_a_e_recorder.html Prepares and begins recording audio to a file at the specified path. ```APIDOC ## - (BOOL) beginRecordingToFileAtPath:(NSString *)path fileType:(AudioFileTypeID)fileType error:(NSError **)error ### Description Prepare and begin recording immediately. ### Parameters - **path** (NSString *) - Required - The path to record to. - **fileType** (AudioFileTypeID) - Required - The kind of file to create. - **error** (NSError **) - Optional - The error, if not NULL and if an error occurs. ### Returns - **BOOL** - YES on success, NO on failure. ``` -------------------------------- ### volumeForSource: Source: https://theamazingaudioengine.com/doc/interface_a_e_mixer_buffer.html Get the volume for a specific audio source. ```APIDOC ## float volumeForSource:(AEMixerBufferSource)source ### Description Get volume for source. ``` -------------------------------- ### initWithBuffer:audioDescription:freeWhenDone: Source: https://theamazingaudioengine.com/doc/interface_a_e_memory_buffer_player.html Initializes the player with a specific memory buffer, audio description, and memory management flag. ```APIDOC ## - initWithBuffer:audioDescription:freeWhenDone: ### Description Initialise the player with a memory buffer. ### Signature (instancetype)initWithBuffer:(void *)buffer audioDescription:(AudioStreamBasicDescription)audioDescription freeWhenDone:(BOOL)freeWhenDone; ``` -------------------------------- ### getParameterValueForId: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_channel.html Gets the value of a specific audio unit parameter. ```APIDOC ## - (double) getParameterValueForId:(AudioUnitParameterID)parameterId ### Description Get an audio unit parameter. ### Parameters - **parameterId** (AudioUnitParameterID) - Required - The audio unit parameter identifier ### Returns - (double) The value of the parameter ``` -------------------------------- ### beginLoadingAudioFileAtURL:audioDescription:completionBlock: Source: https://theamazingaudioengine.com/doc/interface_a_e_memory_buffer_player.html Initializes the player with audio loaded from a specified file URL. ```APIDOC ## beginLoadingAudioFileAtURL:audioDescription:completionBlock: ### Description Initialise with audio loaded from a file. ### Signature (void)beginLoadingAudioFileAtURL:(NSURL *)url audioDescription:(AudioStreamBasicDescription)audioDescription completionBlock:(void(^)(void))completionBlock; ``` -------------------------------- ### initWithComponentDescription: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_channel.html Initializes a new Audio Unit channel instance. ```APIDOC ## - initWithComponentDescription: ### Description Create a new Audio Unit channel. ### Method Instance Method ### Parameters - **componentDescription** (AudioComponentDescription) - Required - The component description for the audio unit. ``` -------------------------------- ### initWithAudioDescription: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_file_writer.html Initializes the AEAudioFileWriter with a specific audio format. ```APIDOC ## - (id) initWithAudioDescription:(AudioStreamBasicDescription)audioDescription ### Description Initializes the writer with a given audio description to use for incoming audio data. ### Parameters - **audioDescription** (AudioStreamBasicDescription) - The audio format of audio that will be fed to this class via the AddAudio functions. ``` -------------------------------- ### initWithAudioDescription:inputEnabled: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Initializes the audio controller system with a provided audio description and input enabled status. ```APIDOC ## - initWithAudioDescription:(AudioStreamBasicDescription)audioDescription inputEnabled:(BOOL)enableInput ### Description Initialize the audio controller system, with the audio description you provide. Creates and configures the input/output audio unit and initial mixer audio unit. ``` -------------------------------- ### initWithURL:error: Source: https://theamazingaudioengine.com/doc/_a_e_audio_file_player_8h_source.html Initializes an AEAudioFilePlayer instance with the audio file at the specified URL. ```APIDOC ## - (instancetype)initWithURL:(NSURL *)url error:(NSError **)error ### Description Initializes the player with the audio file at the given URL. ### Parameters - **url** (NSURL *) - Required - The URL of the audio file. - **error** (NSError **) - Optional - A pointer to an error object to receive information if the operation fails. ``` -------------------------------- ### initWithAudioController: Source: https://theamazingaudioengine.com/doc/interface_a_e_recorder.html Initializes a new instance of the AERecorder with the specified audio controller. ```APIDOC ## - (id) initWithAudioController:(AEAudioController *)audioController ### Description Initialise the recorder instance. ### Parameters - **audioController** (AEAudioController *) - Required - The Audio Controller instance. ``` -------------------------------- ### AEAudioUnitChannel Parameter Control Source: https://theamazingaudioengine.com/doc/_a_e_audio_unit_channel_8h_source.html Methods to get and set parameters for the underlying Audio Unit. ```APIDOC ## -getParameterValueForId: ### Description Retrieves the current value of a specific Audio Unit parameter. ### Signature - (double)getParameterValueForId:(AudioUnitParameterID)parameterId; ## -setParameterValue:forId: ### Description Sets the value for a specific Audio Unit parameter. ### Signature - (void)setParameterValue:(double)value forId:(AudioUnitParameterID)parameterId; ``` -------------------------------- ### AEAudioUnitFilter Parameter Management Source: https://theamazingaudioengine.com/doc/_a_e_audio_unit_filter_8h_source.html Methods to get and set parameter values for the underlying Audio Unit. ```APIDOC ## -getParameterValueForId: ### Description Retrieves the current value of a specific parameter for the Audio Unit. ### Signature - (double)getParameterValueForId:(AudioUnitParameterID)parameterId; ## -setParameterValue:forId: ### Description Sets the value for a specific parameter of the Audio Unit. ### Signature - (void)setParameterValue:(double)value forId:(AudioUnitParameterID)parameterId; ``` -------------------------------- ### initWithComponentDescription:preInitializeBlock: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_channel.html Initializes a new Audio Unit channel with a custom initialization block. ```APIDOC ## - initWithComponentDescription:preInitializeBlock: ### Description Create a new Audio Unit channel, with a block to run before initialization of the unit. ### Method Instance Method ### Parameters - **componentDescription** (AudioComponentDescription) - Required - The component description for the audio unit. - **preInitializeBlock** (void(^)(AudioUnit)) - Required - A block to execute before the audio unit is initialized. ``` -------------------------------- ### Importing Required Frameworks Source: https://theamazingaudioengine.com/doc/_a_e_audio_file_loader_operation_8h.html Include these Foundation and AudioToolbox headers to utilize the audio file loader functionality. ```objective-c #import #import ``` -------------------------------- ### initWithComponentDescription: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_filter.html Initializes a new Audio Unit filter using the provided component description. ```APIDOC ## - (id) initWithComponentDescription:(AudioComponentDescription)audioComponentDescription ### Description Create a new Audio Unit filter. ### Parameters - **audioComponentDescription** (AudioComponentDescription) - Required - The structure that identifies the audio unit. ### Returns - (id) The initialised filter. ``` -------------------------------- ### Implementing Filter Processing Source: https://theamazingaudioengine.com/doc/_a_e_block_filter_8h.html Example of calling the producer function within an AEBlockFilterBlock to generate audio frames for processing. ```objective-c OSStatus status = producer(producerToken, audio, &frames); if ( status != noErr ) return status; ``` -------------------------------- ### initWithComponentDescription: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_channel.html Creates a new Audio Unit channel using the provided AudioComponentDescription. ```APIDOC ## - (id) initWithComponentDescription:(AudioComponentDescription)audioComponentDescription ### Description Create a new Audio Unit channel. ### Parameters - **audioComponentDescription** (AudioComponentDescription) - Required - The structure that identifies the audio unit ### Returns - (id) The initialised channel ``` -------------------------------- ### initWithComponentDescription: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_filter.html Initializes a new instance of an Audio Unit filter using the provided component description. ```APIDOC ## - initWithComponentDescription: ### Description Create a new Audio Unit filter. ### Signature (id) initWithComponentDescription:(AudioComponentDescription)description ``` -------------------------------- ### initWithClientFormat: Source: https://theamazingaudioengine.com/doc/interface_a_e_mixer_buffer.html Initializes a new AEMixerBuffer instance with the specified audio format. ```APIDOC ## - (id) initWithClientFormat:(AudioStreamBasicDescription)clientFormat ### Description Initializes the mixer buffer with the provided audio stream basic description. ### Parameters - **clientFormat** (AudioStreamBasicDescription) - Required - The audio format definition. ``` -------------------------------- ### initWithComponentDescription:preInitializeBlock: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_channel.html Creates a new Audio Unit channel with a block to run before the unit is initialized. ```APIDOC ## - (id) initWithComponentDescription:(AudioComponentDescription)audioComponentDescription preInitializeBlock:(void(^)(AudioUnit audioUnit))preInitializeBlock ### Description Create a new Audio Unit channel, with a block to run before initialization of the unit. ### Parameters - **audioComponentDescription** (AudioComponentDescription) - Required - The structure that identifies the audio unit - **preInitializeBlock** (void(^)(AudioUnit audioUnit)) - Required - A block to run before the audio unit is initialized. ### Returns - (id) The initialised channel ``` -------------------------------- ### Configuration Methods Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Methods to update the audio controller configuration after initialization. ```APIDOC ### - setAudioDescription:error: - (BOOL)setAudioDescription:(AudioStreamBasicDescription)audioDescription error:(NSError **)error ### - setInputEnabled:error: - (BOOL)setInputEnabled:(BOOL)inputEnabled error:(NSError **)error ### - setOutputEnabled:error: - (BOOL)setOutputEnabled:(BOOL)outputEnabled error:(NSError **)error ### - setAudioDescription:inputEnabled:outputEnabled:error: - (BOOL)setAudioDescription:(AudioStreamBasicDescription)audioDescription inputEnabled:(BOOL)inputEnabled outputEnabled:(BOOL)outputEnabled error:(NSError **)error ``` -------------------------------- ### initWithSourceFormat: Source: https://theamazingaudioengine.com/doc/interface_a_e_float_converter.html Initializes a new instance of the AEFloatConverter with a specified source audio format. ```APIDOC ## - initWithSourceFormat: ### Description Initializes the AEFloatConverter instance with the provided source audio format. ### Method Instance Method ### Parameters - **sourceFormat** (id) - Required - The audio format to be used as the source for conversions. ``` -------------------------------- ### init Source: https://theamazingaudioengine.com/doc/interface_a_e_message_queue.html Default initializer for the AEMessageQueue. ```APIDOC ## - (instancetype)init ### Description Default initializer for the AEMessageQueue instance. ``` -------------------------------- ### AEAudioController Initialization Source: https://theamazingaudioengine.com/doc/_a_e_audio_controller_8h_source.html Methods for initializing the audio controller with specific audio stream descriptions and configuration options. ```APIDOC ## -initWithAudioDescription:options: ### Description Initializes an AEAudioController instance with a specified audio stream description and configuration options. ### Method Objective-C Instance Method ### Parameters - **audioDescription** (AudioStreamBasicDescription) - Required - The audio format configuration. - **options** (AEAudioControllerOptions) - Required - Configuration flags for input, output, and hardware settings. ``` -------------------------------- ### beginWritingToFileAtPath: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_file_writer.html Begins the file writing operation with various configuration options. ```APIDOC ## - (BOOL) beginWritingToFileAtPath:(NSString *)path fileType:(AudioFileTypeID)fileType error:(NSError **)error ### Description Creates the output file and prepares internal structures for writing. ### Parameters - **path** (NSString *) - The path to the file to create. - **fileType** (AudioFileTypeID) - The file type for the output file. - **error** (NSError **) - On output, if not NULL, the error if one occurred. ### Returns - **BOOL** - YES on success; NO on error. ``` -------------------------------- ### initWithFileURL:targetAudioDescription: Source: https://theamazingaudioengine.com/doc/_a_e_audio_file_loader_operation_8h_source.html Initializes a new AEAudioFileLoaderOperation instance with a specific file URL and target audio format. ```APIDOC ## - (id)initWithFileURL:(NSURL*)url targetAudioDescription:(AudioStreamBasicDescription)audioDescription ### Description Initializes the operation to load an audio file and convert it to the specified target audio description. ### Parameters - **url** (NSURL*) - Required - The URL of the audio file to load. - **audioDescription** (AudioStreamBasicDescription) - Required - The target audio format for the loaded data. ``` -------------------------------- ### beginLoadingAudioFileAtURL:audioDescription:completionBlock: Source: https://theamazingaudioengine.com/doc/interface_a_e_memory_buffer_player.html Asynchronously loads an audio file from a URL into memory and initializes an AEMemoryBufferPlayer instance upon completion. ```APIDOC ## beginLoadingAudioFileAtURL:audioDescription:completionBlock: ### Description Asynchronously loads the given audio file into memory and creates an AEMemoryBufferPlayer instance when finished. ### Parameters - **url** (NSURL *) - Required - URL to the file to load into memory - **audioDescription** (AudioStreamBasicDescription) - Required - The target audio description to use - **completionBlock** (void(^)(AEMemoryBufferPlayer *, NSError *)) - Required - Block to call when the load operation has finished ``` -------------------------------- ### initWithBufferList: Source: https://theamazingaudioengine.com/doc/_a_e_audio_buffer_manager_8h_source.html Initializes a new AEAudioBufferManager instance with the provided AudioBufferList. ```APIDOC ## - (instancetype)initWithBufferList:(AudioBufferList *)bufferList ### Description Initializes an AEAudioBufferManager object to manage the specified AudioBufferList. ### Parameters - **bufferList** (AudioBufferList *) - Required - The AudioBufferList to be managed by this instance. ``` -------------------------------- ### Importing The Amazing Audio Engine components Source: https://theamazingaudioengine.com/doc/_the_amazing_audio_engine_8h.html Include these headers to access the core audio controller, players, filters, and utility classes. ```objective-c #import "AEAudioController.h" #import "AEAudioController+Audiobus.h" #import "AEAudioFileLoaderOperation.h" #import "AEAudioFilePlayer.h" #import "AEAudioFileWriter.h" #import "AEMemoryBufferPlayer.h" #import "AEBlockChannel.h" #import "AEBlockFilter.h" #import "AEBlockAudioReceiver.h" #import "AEAudioUnitChannel.h" #import "AEAudioUnitFilter.h" #import "AEFloatConverter.h" #import "AEBlockScheduler.h" #import "AEUtilities.h" #import "AEMessageQueue.h" #import "AEAudioBufferManager.h" ``` -------------------------------- ### initWithComponentDescription:preInitializeBlock: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_filter.html Initializes a new Audio Unit filter with a block to execute before the unit is initialized. ```APIDOC ## - (id) initWithComponentDescription:(AudioComponentDescription)audioComponentDescription preInitializeBlock:(void (^)(AudioUnit audioUnit))preInitializeBlock ### Description Create a new Audio Unit filter, with a block to run before initialization of the unit. ### Parameters - **audioComponentDescription** (AudioComponentDescription) - Required - The structure that identifies the audio unit. - **preInitializeBlock** (void (^)(AudioUnit)) - Required - A block to run before the audio unit is initialized. ### Returns - (id) The initialised filter. ``` -------------------------------- ### audioFilePlayerWithURL:error: Source: https://theamazingaudioengine.com/doc/_a_e_audio_file_player_8h_source.html Creates and returns an instance of AEAudioFilePlayer initialized with the audio file at the specified URL. ```APIDOC ## + (instancetype)audioFilePlayerWithURL:(NSURL *)url error:(NSError **)error ### Description Creates a new audio file player instance for the provided file URL. ### Parameters - **url** (NSURL *) - Required - The URL of the audio file to load. - **error** (NSError **) - Optional - A pointer to an error object to receive information if the operation fails. ``` -------------------------------- ### initWithAudioController: Source: https://theamazingaudioengine.com/doc/interface_a_e_block_scheduler.html Initializes a new instance of the AEBlockScheduler with the specified audio controller. ```APIDOC ## - (id) initWithAudioController:(AEAudioController *)audioController ### Description Initializes the block scheduler with the provided audio controller instance. ### Parameters - **audioController** (AEAudioController *) - Required - The audio controller instance. ``` -------------------------------- ### OSStatus Debugging and Component Utilities Source: https://theamazingaudioengine.com/doc/_a_e_utilities_8h_source.html Helper for creating component descriptions and a macro for checking OSStatus results with rate-limited logging. ```c AudioComponentDescription AEAudioComponentDescriptionMake(OSType manufacturer, OSType type, OSType subtype); BOOL AERateLimit(void); #define AECheckOSStatus(result,operation) (_AECheckOSStatus((result),(operation),strrchr(__FILE__, '/')+1,__LINE__)) static inline BOOL _AECheckOSStatus(OSStatus result, const char *operation, const char* file, int line) { if ( result != noErr ) { if ( AERateLimit() ) { int fourCC = CFSwapInt32HostToBig(result); if ( isascii(((char*)&fourCC)[0]) && isascii(((char*)&fourCC)[1]) && isascii(((char*)&fourCC)[2]) ) { NSLog(@"%s:%d: %s: '%4.4s' (%d)", file, line, operation, (char*)&fourCC, (int)result); } else { NSLog(@"%s:%d: %s: %d", file, line, operation, (int)result); } } return NO; } return YES; } ``` -------------------------------- ### initWithComponentDescription:preInitializeBlock: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_unit_filter.html Initializes a new instance of an Audio Unit filter, executing a block before the unit is initialized. ```APIDOC ## - initWithComponentDescription:preInitializeBlock: ### Description Create a new Audio Unit filter, with a block to run before initialization of the unit. ### Signature (id) initWithComponentDescription:(AudioComponentDescription)description preInitializeBlock:(void(^)(AudioUnit audioUnit))block ``` -------------------------------- ### Time Conversion Utilities Source: https://theamazingaudioengine.com/doc/_a_e_utilities_8h_source.html Utilities for initializing time and converting between host ticks and seconds. ```c void AETimeInit(void); uint64_t AECurrentTimeInHostTicks(void); double AECurrentTimeInSeconds(void); uint64_t AEHostTicksFromSeconds(double seconds); double AESecondsFromHostTicks(uint64_t ticks); ``` -------------------------------- ### initWithBuffer:audioDescription:freeWhenDone: Source: https://theamazingaudioengine.com/doc/interface_a_e_memory_buffer_player.html Initializes a new AEMemoryBufferPlayer instance using an existing audio buffer. ```APIDOC ## initWithBuffer:audioDescription:freeWhenDone: ### Description Initializes the player with a provided memory buffer. ### Parameters - **buffer** (AudioBufferList *) - Required - Audio buffer - **audioDescription** (AudioStreamBasicDescription) - Required - The description of the audio provided - **freeWhenDone** (BOOL) - Required - Whether to free the audio buffer when this class is deallocated ``` -------------------------------- ### Import required headers for AEAudioBufferManager Source: https://theamazingaudioengine.com/doc/_a_e_audio_buffer_manager_8h.html Include these system headers to provide the necessary Foundation, AudioToolbox, and threading support for the buffer manager. ```objective-c #import #import #import ``` -------------------------------- ### Initialize AEAudioController Source: https://theamazingaudioengine.com/doc/_getting-_started.html Define the controller property and initialize it with a specific audio format and input setting. ```objective-c @property (nonatomic, strong) AEAudioController *audioController; ... self.audioController = [[AEAudioController alloc] initWithAudioDescription:AEAudioStreamBasicDescriptionNonInterleaved16BitStereo inputEnabled:YES]; // don't forget to autorelease if you don't use ARC! ``` -------------------------------- ### Initialize AEAudioUnitChannel Source: https://theamazingaudioengine.com/doc/_a_e_audio_unit_channel_8h_source.html Methods to initialize an audio unit channel with a component description, optionally providing a pre-initialization block. ```objective-c - (id)initWithComponentDescription:(AudioComponentDescription)audioComponentDescription; ``` ```objective-c - (id)initWithComponentDescription:(AudioComponentDescription)audioComponentDescription preInitializeBlock:(void(^)(AudioUnit audioUnit))preInitializeBlock; ``` -------------------------------- ### AEBlockScheduler Instance Methods Source: https://theamazingaudioengine.com/doc/_a_e_block_scheduler_8h_source.html Methods for initializing the scheduler and managing scheduled audio blocks. ```APIDOC ## -initWithAudioController:(AEAudioController*)audioController Initializes a new AEBlockScheduler instance with the provided audio controller. ## -scheduleBlock:(AEBlockSchedulerBlock)block atTime:(uint64_t)time timingContext:(AEAudioTimingContext)context identifier:(id)identifier Schedules a block to execute at a specific time. ## -scheduleBlock:(AEBlockSchedulerBlock)block atTime:(uint64_t)time timingContext:(AEAudioTimingContext)context identifier:(id)identifier mainThreadResponseBlock:(AEBlockSchedulerResponseBlock)response Schedules a block to execute at a specific time, with an optional response block to be executed on the main thread. ## -schedules Returns an array of currently active schedules. ## -infoForScheduleWithIdentifier:(id)identifier Retrieves information for a specific schedule by its identifier. ## -cancelScheduleWithIdentifier:(id)identifier Cancels a scheduled block identified by the provided identifier. ``` -------------------------------- ### AEAudioFileWriter Methods Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_file_writer.html Methods for initializing the audio writer and managing file write operations. ```APIDOC ## - initWithAudioDescription: ### Description Initialise the writer with a given audio description. ## - beginWritingToFileAtPath:fileType:error: ### Description Begin the write operation to a specified file path. ## - beginWritingToFileAtPath:fileType:bitDepth:error: ### Description Begin the write operation with a specified bit depth. ## - beginWritingToFileAtPath:fileType:bitDepth:channels:error: ### Description Begin the write operation with specified bit depth and channel count. ## - finishWriting ### Description Complete the current writing operation. ## - AEAudioFileWriterAddAudio ### Description Add audio data to be written to the file. ## - AEAudioFileWriterAddAudioSynchronously ### Description Add audio data to be written to the file synchronously. ``` -------------------------------- ### Initialize an AEAudioUnitChannel Source: https://theamazingaudioengine.com/doc/_creating-_audio.html Use AEAudioComponentDescriptionMake to define the component and initialize the channel. ```objective-c AudioComponentDescription component = AEAudioComponentDescriptionMake(kAudioUnitManufacturer_Apple, kAudioUnitType_MusicDevice, kAudioUnitSubType_Sampler) self.sampler = [[AEAudioUnitChannel alloc] initWithComponentDescription:component]; ``` -------------------------------- ### playAtTime: Source: https://theamazingaudioengine.com/doc/_a_e_audio_file_player_8h_source.html Schedules the audio file player to begin playback at a specific time. ```APIDOC ## - (void)playAtTime:(uint64_t)time ### Description Starts playback at the specified audio timestamp. ### Parameters - **time** (uint64_t) - Required - The audio timestamp at which to start playback. ``` -------------------------------- ### Clone The Amazing Audio Engine Repository Source: https://theamazingaudioengine.com/doc/_getting-_started.html Use this command to clone the repository with a shallow depth to save space. ```bash git clone --depth=1 https://github.com/TheAmazingAudioEngine/TheAmazingAudioEngine.git ``` -------------------------------- ### AEAudioController Instance Methods Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Methods for managing audio system state, channel groups, filters, and receivers. ```APIDOC ## AEAudioController Methods ### System Latency and Timing - `AEAudioControllerInputLatency`: Returns input latency in seconds. - `AEAudioControllerOutputLatency`: Returns output latency in seconds. - `AEAudioControllerCurrentAudioTimestamp`: Returns the current audio system timestamp. ### Channel and Group Management - `addChannels:`: Adds channels to the system. - `addChannels:toChannelGroup:`: Adds channels to a specific channel group. - `removeChannels:`: Removes channels from the system. - `removeChannels:fromChannelGroup:`: Removes channels from a specific channel group. - `createChannelGroup`: Creates a new channel group. - `createChannelGroupWithinChannelGroup:`: Creates a sub-group within an existing group. - `setVolume:forChannelGroup:`: Sets volume for a channel group. - `setPan:forChannelGroup:`: Sets pan for a channel group. - `setPlaying:forChannelGroup:`: Sets playing status for a channel group. - `setMuted:forChannelGroup:`: Sets mute status for a channel group. ### Filter Management - `addFilter:`: Adds a filter to system output. - `addFilter:toChannel:`: Adds a filter to a specific channel. - `addFilter:toChannelGroup:`: Adds a filter to a channel group. - `addInputFilter:`: Adds a filter to system input. - `removeFilter:`: Removes a filter from system output. ### Output Receivers - `addOutputReceiver:`: Adds an output receiver. - `addOutputReceiver:forChannel:`: Adds an output receiver to a channel. - `addOutputReceiver:forChannelGroup:`: Adds an output receiver to a channel group. ``` -------------------------------- ### Import Foundation Framework Source: https://theamazingaudioengine.com/doc/_a_e_message_queue_8h.html Standard import required for using the AEMessageQueue header. ```objective-c #import ``` -------------------------------- ### AEAudioUnitChannel Initialization Source: https://theamazingaudioengine.com/doc/_a_e_audio_unit_channel_8h_source.html Methods to initialize an AEAudioUnitChannel instance with a specific AudioComponentDescription. ```APIDOC ## -initWithComponentDescription: ### Description Initializes a new AEAudioUnitChannel instance with the specified audio component description. ### Signature - (id)initWithComponentDescription:(AudioComponentDescription)audioComponentDescription; ## -initWithComponentDescription:preInitializeBlock: ### Description Initializes a new AEAudioUnitChannel instance with a component description and a block to configure the AudioUnit before initialization. ### Signature - (id)initWithComponentDescription:(AudioComponentDescription)audioComponentDescription preInitializeBlock:(void(^)(AudioUnit audioUnit))preInitializeBlock; ``` -------------------------------- ### AEFloatConverter Initialization Source: https://theamazingaudioengine.com/doc/_a_e_float_converter_8h_source.html Initializes a new AEFloatConverter instance with a specified source audio stream format. ```APIDOC ## - (id)initWithSourceFormat:(AudioStreamBasicDescription)sourceFormat ### Description Initializes the converter with the source format of the audio data to be processed. ### Parameters - **sourceFormat** (AudioStreamBasicDescription) - Required - The format of the source audio data. ``` -------------------------------- ### Configure CocoaPods for The Amazing Audio Engine Source: https://theamazingaudioengine.com/doc/_getting-_started.html Add this line to your Podfile to include the library in your project. ```text pod 'TheAmazingAudioEngine' ``` -------------------------------- ### initWithNumberOfChannels:sampleRate: Source: https://theamazingaudioengine.com/doc/interface_a_e_limiter.html Initializes a new AELimiter instance with the specified number of channels and sample rate. ```APIDOC ## initWithNumberOfChannels:sampleRate: ### Description Initializes the limiter object. ### Parameters - **numberOfChannels** (int) - Required - Number of channels to use - **sampleRate** (Float32) - Required - Sample rate to use ``` -------------------------------- ### AEAudioController Methods Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html A collection of instance methods for managing audio receivers, metering, and utility operations. ```APIDOC ## AEAudioController Methods ### Output Receivers - `removeOutputReceiver:fromChannel:`: Remove an output receiver from a channel. - `removeOutputReceiver:fromChannelGroup:`: Remove an output receiver from a particular channel group. - `outputReceivers`: Obtain a list of all top-level output receivers. - `outputReceiversForChannel:`: Obtain a list of all output receivers for the specified channel. - `outputReceiversForChannelGroup:`: Obtain a list of all output receivers for the specified group. ### Input Receivers - `addInputReceiver:`: Add an input receiver. - `addInputReceiver:forChannels:`: Add an input receiver, specifying a channel selection. - `removeInputReceiver:`: Remove an input receiver. - `removeInputReceiver:fromChannels:`: Remove an input receiver. - `inputReceivers`: Obtain a list of all input receivers. ### Timing Receivers - `addTimingReceiver:`: Add a timing receiver. - `removeTimingReceiver:`: Remove a timing receiver. - `timingReceivers`: Obtain a list of all timing receivers. ### Metering - `outputAveragePowerLevel:peakHoldLevel:`: Get output power level information since this method was last called. - `outputAveragePowerLevels:peakHoldLevels:channelCount:`: Get output power level information for multiple channels since this method was last called. - `averagePowerLevel:peakHoldLevel:forGroup:`: Get output power level information for a particular group, since this method was last called. - `averagePowerLevels:peakHoldLevels:forGroup:channelCount:`: Get output power level information for a particular group, since this method was last called. - `inputAveragePowerLevel:peakHoldLevel:`: Get input power level information since this method was last called. - `inputAveragePowerLevels:peakHoldLevels:channelCount:`: Get input power level information for multiple channels since this method was last called. ### Utilities - `AEAudioControllerAudioDescription`: Get access to the configured AudioStreamBasicDescription. - `AEAudioControllerInputAudioDescription`: Get access to the input AudioStreamBasicDescription. - `AEConvertSecondsToFrames`: Convert a time span in seconds into a number of frames at the current sample rate. - `AEConvertFramesToSeconds`: Convert a number of frames into a time span in seconds. - `AECurrentThreadIsAudioThread`: Determine if the current thread is the audio thread. ``` -------------------------------- ### AELimiter Initialization Source: https://theamazingaudioengine.com/doc/_a_e_limiter_8h_source.html Initializes a new AELimiter instance with a specified number of channels and sample rate. ```APIDOC ## - (id)initWithNumberOfChannels:(int)numberOfChannels sampleRate:(Float32)sampleRate ### Description Initializes the limiter with the required channel count and sample rate. ### Parameters - **numberOfChannels** (int) - Required - The number of audio channels to process. - **sampleRate** (Float32) - Required - The sample rate of the audio stream. ``` -------------------------------- ### Importing AEUtilities dependencies Source: https://theamazingaudioengine.com/doc/_a_e_utilities_8h.html Required headers for utilizing the time utility functions. ```objective-c #import #import ``` -------------------------------- ### AELimiter Instance Methods Source: https://theamazingaudioengine.com/doc/interface_a_e_limiter.html Methods available for interacting with the AELimiter instance. ```APIDOC ## - initWithNumberOfChannels:sampleRate: ### Description Initializes the limiter with a specified number of channels and sample rate. ## - AELimiterEnqueue ### Description Enqueues audio into the limiter. ## - AELimiterDequeue ### Description Dequeues audio from the limiter. ## - AELimiterFillCount ### Description Queries the current fill count of the limiter. ## - AELimiterDrain ### Description Dequeues all audio from the limiter, including audio held back for the lookahead algorithm. ## - AELimiterReset ### Description Resets the buffer and clears all enqueued audio. ``` -------------------------------- ### AEAudioFilePlayer Methods Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_file_player.html Methods available for initializing and controlling audio file playback. ```APIDOC ## - initWithURL:error: ### Description Default initialiser for the audio file player. ### Parameters - **URL** (NSURL) - Required - The URL of the audio file to load. - **error** (NSError **) - Optional - Pointer to an error object if initialization fails. ## - playAtTime: ### Description Schedule playback for a particular time. ### Parameters - **time** (AudioTimeStamp) - Required - The time at which to start playback. ## - AEAudioFilePlayerGetPlayhead ### Description Get the current playhead position. ### Returns - **UInt32** - The current playhead position in frames. ``` -------------------------------- ### Audio Buffer List Utilities Source: https://theamazingaudioengine.com/doc/globals_func.html Functions for creating, manipulating, and managing audio buffer lists. ```APIDOC ## AEAudioBufferList Functions - AEAudioBufferListCopy() - AEAudioBufferListCreate() - AEAudioBufferListFree() - AEAudioBufferListGetLength() - AEAudioBufferListOffset() - AEAudioBufferListSetLength() - AEAudioBufferListSilence() ``` -------------------------------- ### initWithMessageBufferLength: Source: https://theamazingaudioengine.com/doc/interface_a_e_message_queue.html Initializes the message queue with a specified buffer length. ```APIDOC ## - (instancetype)initWithMessageBufferLength:(int32_t)numBytes ### Description Initialize with specified message buffer length. The true buffer length will be multiples of the device page size. ### Parameters - **numBytes** (int32_t) - Required - The message buffer length in bytes. ``` -------------------------------- ### AEPlaythroughChannel Class Methods Source: https://theamazingaudioengine.com/doc/interface_a_e_playthrough_channel.html Methods for initializing and managing the lifecycle of an AEPlaythroughChannel instance. ```APIDOC ## - (instancetype)init ### Description Initializes a new instance of the AEPlaythroughChannel. ## - (void)setupWithAudioController:(AEAudioController *)audioController ### Description Performs setup to prepare the channel for playback or receiving audio. ## - (void)teardown ### Description Cleans up resources used by the channel. ``` -------------------------------- ### setAudioDescription:error: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Sets a new audio description, causing the controller to teardown and recreate rendering resources. ```APIDOC ## - (BOOL) setAudioDescription:(AudioStreamBasicDescription)audioDescription error:(NSError **)error ### Description Set a new audio description. This will cause the audio controller to stop, teardown and recreate its rendering resources, then start again (if it was previously running). ### Parameters - **audioDescription** (AudioStreamBasicDescription) - The new audio description - **error** (NSError **) - On output, the error, if one occurred ### Returns - YES on success, NO on failure ``` -------------------------------- ### AETimeInit Source: https://theamazingaudioengine.com/doc/_a_e_utilities_8h.html Initializes the time utilities required for subsequent time-based operations. ```APIDOC ## void AETimeInit(void) ### Description Initializes the time utilities. ### Parameters None ``` -------------------------------- ### Play Audio Files with AEAudioFilePlayer Source: https://theamazingaudioengine.com/doc/_creating-_audio.html Initialize an audio file player using a resource URL from the application bundle. ```objective-c NSURL *file = [[NSBundle mainBundle] URLForResource:@"Loop" withExtension:@"m4a"]; self.loop = [AEAudioFilePlayer audioFilePlayerWithURL:file error:NULL]; ``` -------------------------------- ### playAtTime: Source: https://theamazingaudioengine.com/doc/interface_a_e_memory_buffer_player.html Schedules playback to begin at a specific host time, emitting silence until that timestamp is reached. ```APIDOC ## playAtTime: ### Description Schedules playback for a particular time. This causes the player to emit silence up until the given timestamp is reached. Use this method to synchronize playback with other audio generators. ### Parameters - **time** (uint64_t) - Required - The time, in host ticks, at which to begin playback ``` -------------------------------- ### Audio Description Utilities Source: https://theamazingaudioengine.com/doc/globals_func.html Functions for creating and configuring audio stream and component descriptions. ```APIDOC ## Audio Description Functions - AEAudioComponentDescriptionMake() - AEAudioStreamBasicDescriptionMake() - AEAudioStreamBasicDescriptionSetChannelsPerFrame() ``` -------------------------------- ### setAudioDescription:inputEnabled:outputEnabled:error: Source: https://theamazingaudioengine.com/doc/interface_a_e_audio_controller.html Composite method to update audio description and input/output status. ```APIDOC ## - (BOOL) setAudioDescription:(AudioStreamBasicDescription)audioDescription inputEnabled:(BOOL)inputEnabled outputEnabled:(BOOL)outputEnabled error:(NSError **)error ### Description Composite update method. This convenience method updates the audio description, and the input and output enabled status. ### Parameters - **audioDescription** (AudioStreamBasicDescription) - The new audio description - **inputEnabled** (BOOL) - Whether to enable input - **outputEnabled** (BOOL) - Whether to enable output - **error** (NSError **) - On output, the error, if one occurred ### Returns - YES on success, NO on failure ``` -------------------------------- ### AEAudioBufferListCreate Source: https://theamazingaudioengine.com/doc/_a_e_utilities_8h.html Allocates an audio buffer list and the associated mData pointers. Note: Do not use this utility from within the Core Audio thread. ```APIDOC ## AEAudioBufferListCreate ### Description Allocates an audio buffer list and the associated mData pointers. Do not use this utility from within the Core Audio thread (such as inside a render callback) as it may cause the thread to block. ### Parameters - **audioFormat** (AudioStreamBasicDescription) - Audio format describing audio to be stored in buffer list - **frameCount** (int) - The number of frames to allocate space for (or 0 to just allocate the list structure itself) ### Returns - **AudioBufferList*** - The allocated and initialised audio buffer list ```