["Sound"]


["ALSA"], the Advanced Linux Sound Architecture, was originally started because the OSS architecture (see ["OSSFree"]) was outdated and the free variant of OSS lacked some drivers available only in the commercial variant. For several years ["ALSA"] was a project separate from Linux. The drivers were added to Linux during the 2.5 development series and became the standard sound driver system in Linux 2.6.

["ALSA"] is not just a set of ["sound"] drivers, it is also a library with an extensible API that gives applications access to the latest features of sound cards (e.g., multiple sound channels, Dolby AC-3, etc.)

ALSA is backward compatible with OSS.

Configuration

The latest ALSA packages should work out of the package. The only hitch may be module loading. At one time the ALSA initscript /etc/init.d/alsa loaded modules but this was not well suited to a hotplug environment so that code was removed. Today, hotplug or discover will take care of loading the required ALSA sound modules. Alternatively you can list the modules you need in the /etc/modules file.

Alternatively, you can run the alsaconf utility. This attempts to detect your sound hardware and on the basis of its findings it writes an extra configuration file, /etc/modutils/sound or /etc/modprobe.d/sound, containing lines like these:

    alias snd-card-0 snd-cs46xx
    options snd-cs46xx index=0

With these module loader configuration entries in place, when the "snd" module loads it will load snd-cs46xx above itself.

Troubleshooting

ALSA loads sound 'cards' in the order it finds them. The first card is always used as the 'default'. If you're unlucky, and a microphone gets selected first, then you're not going to be able to play sounds. You can check the order that ALSA has loaded card with:

  cat /proc/asound/cards

There are two ways to fix this problem.

1. Force the cards to load in a different order. I chose this route, and added the following to my /etc/modprobe.d/sound:

  options snd-trident index=0
  options snd-usb-audio index=1

This forces my Trident card to be the default (card 0) and my USB microphone to be card 1.

2. Change the default card by editing /etc/asound.conf or ~/.asound.conf

More information

For more information, read the README.Debian files in the alsa-base and alsa-source packages or check out http://www.alsa-project.org and http://alsa.opensrc.org.

New, just in: