This is a very simple introduction to a very simple API. Some basic concepts: Audiere has a C++ API. You, as a user, interact with Audiere through a set of abstract classes (i.e. interfaces) defined in audiere.h. All Audiere objects are reference counted. This means that when you want to hold on to an object, you call ref() on it, and when you are done, you call unref(). To make this easier, Audiere provides a RefPtr class that calls ref() on construction and unref() on destruction. Otherwise, it acts just like a normal pointer, greatly simplifying your code. For even greater convenience, each interface type has an associated InterfacePtr type which is just like RefPtr<Interface>. Now, on to the good stuff... Make sure the Audiere header is in your compiler include path. Every Audiere symbol is contained within the namespace 'audiere', so if you want your code to be a little clearer, you can bring the entire audiere namespace into global scope. #include <audiere.h> using namespace audiere; You need to open an AudioDevice before you can play sounds... AudioDevicePtr device(OpenDevice()); if (!device) { // failure } Now that we have a device, we can actually open and play sounds. /* * If OpenSound is called with the last parameter = false, then * Audiere tries to load the sound into memory. If it can't do * that, it will just stream it. */ OutputStreamPtr sound(OpenSound(device, "effect.wav", false)); if (!sound) { // failure } /* * Since this file is background music, we don't need to load the * whole thing into memory. */ OutputStreamPtr stream(OpenSound(device, "music.ogg", true)); if (!stream) { // failure } Great, we have some opened streams! What do we do with them? // let's start the background music first stream->setRepeat(true); stream->setVolume(0.5f); // 50% volume stream->play(); // now play a sound effect sound->play(); When you are done using Audiere, just let the RefPtr objects go out of scope, and they will automatically clean themselves up. If you really _must_ delete an object before its pointer goes out of scope, just set the pointer to 0. That's it! Look in audiere.h or the doxygen documentation for descriptions of the remaining interfaces and methods.