This is an old revision of the document!
Table of Contents
ALSA-only audio on Linux
this is a guide on how to setup ALSA to be enjoyable by itself without an audio server.
I will be showing changes to /etc/asound.conf as to effect all users (including daemons such as MPD). you can also use ~/.asoundrc for setup specific to your user.
dmix
dmix is a software mixer for audio output. it will allow multiple programs to simultaneously play sound at the same time.
in asound.conf, the following configuration could be used to create a software mixer that can be accessed by multiple users.
- /etc/asound.conf
pcm.mixer { type dmix ipc_key 1024 ipc_key_add_uid false # remove these two lines to only allow ipc_perm 0666 # one user to use the mixer at a time. slave { pcm "hw:1,1" # hardware output device to use. } } pcm.!default plug:mixer # set the default device to the mixer.
S/PDIF multichannel
the a52 alsa plugin can be used to output Dolby Digital 5.1 (or lower) multichannel audio through S/PDIF.
you must have the plugin installed. look in your distribution's repositories for a package similar to “alsa-plugins”. it may be in a separate package such as “alsa-plugins-a52”, as on Alpine Linux.
here is an example configuration:
- /etc/asound.conf
pcm.surround { type a52 slavepcm "hw:1,1" channels 6 bitrate 1000 rate 48000 format S16_LE }
equalization
alsaequal is a 10-band software equalizer in the form of an ALSA plugin. each user has their own persistent settings, stored in ~/.alsaequal.bin.
the following configuration builds on the previous section on dmix. an asoundrc using solely alsaequal can be very simple.
- /etc/asound.conf
pcm.dmix_stereo { type dmix ipc_key 1024 ipc_key_add_uid false ipc_perm 0666 slave { pcm "hw:1,1" period_time 0 period_size 1024 buffer_size 4096 rate 48000 } bindings { # channel configuration (stereo, quad, 5.1, ...). 0 0 1 1 } } pcm.plug_eq_stereo { type equal slave.pcm "plug:dmix_stereo" } pcm.eq_stereo { # this plug is needed to make the alsaequal output suitable for use by most applications. type plug slave.pcm "plug_eq_stereo" } ctl.eq_stereo { # this ctl is what allows adjustment in alsamixer (or similar utilities). type equal } pcm.!default eq_stereo
multichannel
here is an example of using alsaequal with a52.
- /etc/asound.conf
... pcm.surround { type a52 slavepcm "hw:1,1" channels 6 bitrate 1000 rate 48000 format S16_LE } pcm.plug_eq_surround { type equal channels 6 # changes channel configuration to 5.1. controls ".alsaequal.surround.bin" # sets the control information file to at ~/.alsaequal.surround.bin. this must be changed if there are to be multiple alsaequals of differing channel configurations. slave.pcm "plug:surround" } pcm.eq_surround { type plug slave.pcm "plug_eq_surround" } ctl.eq_surround { type equal channels 6 controls ".alsaequal.surround.bin" } ...