Create a singleton class to make playing audio extremely within an iOS app simpler.
This code is available under the MIT license.
- Drag files from the Classes folder to your project;
- Add AudioToolbox and AVFoundation frameworks;
- #import "MCSoundBoard.h" wherever you want to use it.
Here's how you initialize and play a "short sound" (30s or shorter .caf, .air or .wav snippets):
[MCSoundBoard addSoundAtPath:[[NSBundle mainBundle] pathForResource:@"ding.wav" ofType:nil] forKey:@"ding"];
[MCSoundBoard playSoundForKey:@"ding"];
For longer AAC, MP3 and ALAC (Apple Lossless) audio, use:
[MCSoundBoard addAudioAtPath:[[NSBundle mainBundle] pathForResource:@"play.mp3" ofType:nil] forKey:@"play"];
[MCSoundBoard playAudioForKey:@"play"];
For a nice fede in effect, you can use
[MCSoundBoard playAudioForKey:@"play" fadeInInterval:2.0];
Similar metods are available for stopping and pausing the audio:
+ (void)stopAudioForKey:(id)key fadeOutInterval:(NSTimeInterval)fadeOutInterval;
+ (void)stopAudioForKey:(id)key;
+ (void)pauseAudioForKey:(id)key fadeOutInterval:(NSTimeInterval)fadeOutInterval;
+ (void)pauseAudioForKey:(id)key;
For longer audio, this class uses AVAudioPlayer and, if you need to set volume, number of loops and so on, you can get access to the underlying player by calling:
AVAudioPlayer *player = [MCSoundBoard audioPlayerForKey:@"play"];
player.numberOfLoops = -1; // Endless looping
Alternatively, if number of loops is all you want to change there is a convenience method for that:
[MCSoundBoard loopAudioForKey:@"play" numberOfLoops:-1];