Even though audio support in Linux is provided by
ALSA (Advanced Linux Sound Architecture) on the lowest level,
PulseAudio is the way how applications usually interface with the audio subsystem. For example, with "pure" ALSA only a single application could use an audio device at a time! PulseAudio sits on top of ALSA and provides things like "mixing" and stuff. PulseAudio is the de facto standard on most Linux distributions. So, if you have ever used "sound" on a somewhat recent Linux machine, probably PulseAudio was involved ;-)
In broad terms ALSA is a kernel subsystem that provides the sound hardware driver, and PulseAudio is the interface engine between applications and ALSA. [...] PulseAudio acts as a sound server, where a background process accepting sound input from one or more sources (processes, capture devices, etc.) is created. The background process then redirects these sound sources to one or more sinks (sound cards, remote network PulseAudio servers, or other processes). |
To my understanding,
SDL provides access to the graphics and audio hardware (and much more!) in a
cross-platform way. Under the hood, it uses platform-specific interfaces on each platform, of course. On Linux, it would use, for example, X11/OpenGL and PluseAudio, whereas on Windows it would probably use DirectX. This means using SDL may be a great idea for developing cross-platform applications, but it probably is "killing a fly with a sledge hammer" for a simple Linux-only tool that just needs to do basic audio output.