Alsa

asoundrc / asound.conf

By default sound is processed through dmix plugin which handles rate and channels conversion.

Plugin: hw

This plugin communicates directly with the ALSA kernel driver. It is a raw communication without any conversions.

To override “default” pcm device and route outputdirectly into hardware:

pcm.!default {
    type hw
    card 0
    format S16_LE
}

With settings above, there is no possiblity to play mono sound (channel=1), when there is stereo audio device.

Change default card:

pcm.!default {
  type hw
  card 1
  device 3
}

ctl.!default {
  type hw
  card 1
  device 3
}

Plguin: plug

Is a plugin responsible for rate and format conversion.

pcm.!default {
    type plug
    slave {
        pcm "hw:0,0"
        format S16_LE
    }

}

There might be problems with some programs though. Some applications always try to open a control device with the same name as the pcm device they are given, so you may also need to create a dummy control device with the same name:

ctl.!default {
    type hw
    card 0
}

Plugin: asym

asym is an ALSA PCM plugin that combines half-duplex PCM plugins like dsnoop and dmix into one full-duplex device. http://alsa.opensrc.org/Asym

Plugin: dmix

PCM plugins extend the functionality of PCM devices allowing low-level sample conversions and copying between channels, files and soundcard devices. The dmix plugin provides for direct mixing of multiple streams. http://alsa.opensrc.org/Dmix