Hi Neo!
Sorry for the delay on the Audio library ... we are currently busy adding an online highscore system to PenguFlip (we planned to make a library out of that as well, but with Apples plans for the Game Center, I am afraid this won't make much sense any longer ...).
Unfortunately, that is taking much longer than anticipated. Thus the delay.
Basically, the Audio Engine is already running perfectly fine -- it's being used in PenguFlip, after all. However, it's lacking support for compressed Audio; you can only play uncompressed audio for now.
But if that's all you need, you can use it! I mailed you the classes that make up the library. Just add them to your project, for now. You will also have to link "OpenAL" and the "AudioToolbox" to your project.
Here is a short description about how the sound classes will be used. Currently, they are still only in PenguFlip (without the "SP"-prefix), but probably we will be able to use them without much changes.
At the beginning and the end of the application, you should start / stop the audio engine:
[SPAudioEngine start]; // if you forget this, it will be done automatically
[SPAudioEngine stop];
If performance is not an issue, you can use this one-liner to play a sound:
[[SPSound soundWithContentsOfFile:@"meep.caf"] play];
Otherwise, you can keep the SPSound reference, and use it later to play the sound, or create a SoundChannel, which can be used to play/pause/stop the sound at any time. If required, you can be notified at the end of the sound.
SPSound *sound = [[SPSound alloc] initWithContentsOfFile:@"meep.caf"];
double duration = sound.duration;
// simple way to play the sound:
[sound play];
[sound release]; // no problem! sound sound will be released when it has finished playing.
SPSoundChannel *channel = [sound createChannel];
// get notified when the end is reached
[channel addEventListener:@selector(onSoundCompleted:) atTarget:self forType:SP_EVENT_TYPE_SOUND_COMPLETED];
[channel play];
BOOL isPlaying = channel.isPlaying;
[channel pause];
BOOL isPaused = channel.isPaused;
[channel stop];
BOOL isStopped = channel.isStopped;
[channel release]; // oops! this time, the sound will stop.
It's all designed to be as simple to use as possible -- and if you know the audio classes of Flash, you will notice that it's very similar =)
I hope this will get you started!
And, don't worry: making these Audio classes official is still the hottest point on our "todo"-list
Best regards,
Daniel