Linux sound system is, well, really a mess… Look at the following pictures:

linuxaudio.png

linuxaudio.png

LXF130.audio.layers.png

Maybe these articles will help:

http://www.linux.com/archive/feature/113775

http://www.tuxradar.com/content/how-it-works-linux-audio-explained

So, the Linux sound system is somehow like this:

  • ALSA is of the lowest level and directly talks to hardware.
  • Jack is a sound server which is like a switch-board on which different inputs/outputs are plugged. It’s real-time, low-latency, as well as cross-platform. It also has support for distributing audio across a network.
  • PulseAudio is also a sound server. It is network-transparent and capable of software mixing. You can adjust the volume of each application which is based on PulseAudio. However, I think PulseAudio works at a higher level than Jack, though they can both call ALSA directly.
  • Gstreamer and Xine are multimedia frameworks which work at an even higher level.

There are some other components I don’t mention here, such as OSS, ESD and aRts. You’d better refer to the articles above.