Official Alsa pages:
Very precious notes from users:
By default sound is processed through dmix plugin which handles rate and channels conversion.
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 }
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 }
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
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