title: Simple C++ Sound API
body: <p>My commercial embedded C++ Linux project requires playing wav files and tones at individual volume levels concurrently. A few examples of the sounds:</p>
  
  <p>• “Click” sounds each time user presses screen played at a user-specified volume <br>
  • Warning sounds played at max-volume <br>
  • Warning tones requested by other applications at app-specified volume level (0-100%) <br>
  • Future support for MP3 player and/or video playback (with sound) at user-specified volume. All other sounds should continue while song/video is playing. <br></p>
  
  <p>We're using Qt as our UI framework which has QtMultimedia and Phonon support. However, I heard the former has spotty sound support on Linux and the latter is an older version and may be deprecated in an upcoming Qt release.</p>
  
  <p>I've done some research and here are a few APIs I've come across: <br>
  <a href="http://userbase.kde.org/Phonon" rel="noreferrer">KDE Phonon</a> <br>
  <a href="http://www.sfml-dev.org/index.php" rel="noreferrer">SFML</a> <br>
  <a href="http://www.portaudio.com/" rel="noreferrer">PortAudio</a> <br>
  <a href="http://www.libsdl.org/projects/SDL_mixer/" rel="noreferrer">SDL_Mixer</a> <br>
  <a href="http://kcat.strangesoft.net/openal.html" rel="noreferrer">OpenAL Soft</a> <br>
  <a href="http://www.fmod.org/" rel="noreferrer">FMOD</a> (though I'd prefer to avoid license fees)<br>
  <a href="http://www.alsa-project.org/main/index.php/Main_Page" rel="noreferrer">ALSA</a> (perhaps a bit too low-level...)<br></p>
  
  <p>Other considerations:
  Cross-platform isn't required but preferred. We'd like to limit dependencies as much as possible. There is no need for advanced features like 3D audio or special effects in the foreseeable future. My team doesn't have much audio experience so ease-of-use is important. </p>
  
  <p>Are any of these overkill for my application? Which seems like the best fit?</p>
  
  <p><strong>Update:</strong>
  It turns out we were already dependent on SDL for other reasons so we decided on SDL_Mixer. For other Embedded applications, however, I'd take a long at the PortAudio/libsndfile combo as well due to their minimal dependencies.</p>