SDL_sound is a library that handles the decoding of several popular sound file formats, such as .WAV and .MP3. It is meant to make the programmer's sound playback tasks simpler. The programmer gives SDL_sound a filename, or feeds it data directly from one of many sources, and then reads the decoded waveform data back at her leisure.
If resource constraints are a concern, SDL_sound can process sound data in programmer-specified blocks. Alternately, SDL_sound can decode a whole sound file and hand back a single pointer to the whole waveform. SDL_sound can also handle sample rate, audio format, and channel conversion on-the-fly and behind-the-scenes, if the programmer desires.
As the name implies, SDL_sound is an add-on to Simple Directmedia Layer, and as such, you'll need it to build and use SDL_sound. SDL gives us lots of convenience for porting and implementing some elements of the library, not to mention that it is a powerful, cross platform answer to DirectX. You should definitely look into it, whether you use SDL_sound or not.
Places SDL_sound is known to be used:
· The Ambient Music System uses SDL_sound in its player module.
· The popular game glTron uses SDL_sound for sound playback.
· Dominik Haumann wrote in to mention C++ wrappers for SDL_sound, which can be found here.
· MusicBox, a GNUstep music manager, uses SDL_sound to decode various audio formats.
· The SuSE Linux distribution has been know to package SDL_sound (at least version 0.1.5 has been spotted in the wild).
· Gentoo Linux distributes SDL_sound via their "portage" system. Just "emerge sdl-sound".
· FreeBSD has SDL_sound in their Ports tree: here're the details.
· NetBSD Appears to have packaged SDL_sound, too: details.
· Debian has packaged SDL_sound, too: details.
· ROCK Linux has an SDL_sound package: details.
· Probably other places. Email me if you want to be listed here.
· Support for "decoding" raw audio samples.
· Support for decoding Microsoft WAVE audio files (uncompressed and MS-ADPCM encoded waveforms are supported, currently) (.WAV).
· Support for decoding various MPEG audio files through SMPEG (.MP3, .MPG, .MPEG).
· Support for decoding MPEG-1 Layer 3 audio files internally (makes use of LGPL'd code from mpg123.) (.MP3).
· Support for decoding MIDI music files (.MIDI, .MID).
· Support for decoding Ogg Vorbis audio files through libvorbis (.OGG).
· Support for decoding Speex voice files through libspeex (.SPX).
· Support for decoding FLAC audio files through libFLAC (.FLAC, .FLA).
· Support for decoding Creative Labs Voice files (.VOC).
· Support for decoding Audio Interchange File Format files (.AIFF).
· Support for decoding Shorten-compressed audio data (.SHN).
· Support for Sun's audio format (.AU).
· Support for decoding through MikMod. (.MOD, .IT, .XM, .S3M, .MTM, .669, .STM, .ULT, .FAR, .MED, .AMF, .DSM, .IMF, .GDM, .STX, .OKT).
· Support for decoding through ModPlug. (.669, .AMF, .AMS, .DBM, .DMF, .DSM, .FAR, .IT, .MDL, .MED, .MOD, .MT2, .MTM, .OKT, .PTM, .PSM, .S3M, .STM, .ULT, .UMX, .XM)
· Experimental support for decoding through Apple Quicktime (MacOS only).
· Compiles/runs on Linux (x86 tested).
· Compiles/runs on Linux (x86-64 tested).
· Compiles/runs on Linux (PowerPC tested).
· Compiles/runs on FreeBSD (x86 tested).
· Compiles/runs on Win32 (x86 tested).
· Compiles/runs on MacOS Classic (PowerPC tested).
· Compiles/runs on MacOS X (PowerPC tested).
· Compiles/runs on BeOS (x86 tested).
· Compiles/runs on WinCE/PocketPC (StrongARM tested).
· May compile and run elsewhere with little to no modification. Success stories and patches are welcome.
What doesn't work:
· Support for more forms of compressed .WAV files is planned, but not yet implemented.
· Support for various forms of compressed .AIFF files is planned, but not yet implemented.
· Contributions of other ports are, of course, welcome.
What's New in This Release:
· Apparently MICRO_VERSION in configure.in doesn't do what I think; reset for binary compatibility.
· Look for Speex includes in new directory. Converted all text encoding from ISO-8859-1 to UTF-8. Fixed "make dist" script for dealing with Subversion instead of CVS. Added Speex to the README. Upped version to 1.0.2.
· Check if Speex header has bogus data.
· Minor correction in Timidity resampling code.
· Fixed uninitialized buffer in mpglib.
· Fixed bogus memory dereference when SMPEG fails init.
· Added playsound_simple.c.
· Backed out some commits, converted repository to Subversion, and branched off to a 1.1.0 development tree.
· VOC decoder was broken. Now it isn't.
· Building fixes.