Amarok/Archives/Amarok 1.4/User Guide/Setting up Dmix for ALSA
Appearance
Setting Up DMix For Alsa
Below, you'll find an example configuration file, which will enable the Dmix plugin on your system.
- Note that the instructions below are only necessary if the built-in dmix plugin distributed with alsa-lib (libasound2 on Debian-based systems) does not work! You can access this built-in, predefined dmix plugin by using "plug:dmix" as the virtual ALSA device.
- Note also that "For ALSA 1.0.9rc2 and higher you don't need to setup dmix. Dmix is enabled as default for soundcards which don't support hw mixing." -- alsa wiki. so the simplest solution may be to remove all old configuration files and reinstall alsa (kernel modules might require a restart if it doesn't work initially). If you are running a recent version of alsa, and you can't get more than one sound at a time with the default configurations, THIS IS A BUG.
You can save the configuration file either in ~/.asoundrc (only affects your user) or in /etc/asound.conf (whole system). After editing these files, you need only to restart the ALSA application(s).
1pcm.ossmix {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0" # make sure this matches the actual device
#period_time 0 # not necessary since ALSA 1.0pre
period_size 1024 # Use a power of 2
buffer_size 4096 # must be a multiple of period_size
#rate 44100 # not necessary; let alsa-lib handle this
}
bindings {
0 0
1 1 # bind only the first 2 channels
}
}
pcm.duplex
{
type asym
playback.pcm "ossmix"
capture.pcm "dsnoop"
}
# Everything shall be dmixed, so redefine "default":
# Note that this is _not_ a good idea, since dmix doesn't allow mmap access currently
#pcm.!default {
# type plug
# slave.pcm "duplex"
#}
# OSS via aoss should d(mix)stroyed:
pcm.dsp0 {
type plug
slave.pcm "duplex"
}
ctl.ossmix {
type hw
card 0
}
To test if dmix is working, you can run two or three instances of "alsaplayer" (or any other ALSA application, like amaroK) at the same time:
1alsaplayer -o alsa -d plug:ossmix some.mp3
or
1aplay -D plug:ossmix some.mp3
If you get skipping in your applications when doing processor-intensive tasks, such as compiling or using OpenGL visualizations, increasing buffer_size in ~/.asoundrc can help. It should be increased by a power of 2, e.g.:
1pcm.ossmix {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
#period_time 0
period_size 1024
buffer_size 16384 # buffer size = 4096 x 2 x 2
#rate 44100
}
bindings {
0 0
1 1
}
}