User Tools

Site Tools


alsa_only_audio

This is an old revision of the document!


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 surround sound

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"
}
 
...
alsa_only_audio.1751952404.txt.gz · Last modified: by ethan

Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki