User guide

For example, as shown in the top-middle cell of the table, you might specify a preference for a high sample
rate if audio quality is very important in your app, and if large file size is not a significant issue.
The default audio I/O buffer duration (about 0.02 seconds for 44.1 kHz audio) provides sufficient responsiveness
for most apps. A lower I/O duration can be set for latency-critical apps such as live musical instrument monitoring,
but you won’t need to change this value for most apps.
Setting Preferred Hardware Values
Set preferred hardware values prior to activating your audio session. When an app sets a preferred value, it
does not take effect until the audio session is activated. Verify the selected values after your audio session has
been reactivated. While your app is running, Apple recommends that you deactivate your audio session before
changing any of the set values. Listing 4-1 shows how to set preferred hardware values and how to check the
actual values being used.
Listing 4-1 Setting and querying hardware values
NSError *audioSessionError = nil;
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:&audioSessionError];
if (audioSessionError) {
NSLog(@"Error %ld, %@, (long)audioSessionError.code,
audioSessionError.localizedDescription);
}
NSTimeInterval bufferDuration =.005;
[session setPreferredIOBufferDuration:bufferDuration error:&audioSessionError];
if (audioSessionError) {
NSLog(@"Error %ld, %@, (long)audioSessionError.code,
audioSessionError.localizedDescription);
}
double sampleRate = 44100.0
[session setPreferredSampleRate:samplerate error:&audioSessionError];
if (audioSessionError) {
NSLog(@"Error %ld, %@, (long)audioSessionError.code,
audioSessionError.localizedDescription);
}
Optimizing Your App for Device Hardware
Setting Preferred Hardware Values
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
33