Amarok/Archives/Amarok 1.4/User Guide/Setting up Dmix for ALSA

From KDE Community Wiki
Revision as of 17:42, 7 December 2012 by Mayankmadan (talk | contribs) (Created page with "= 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 n...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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
   }
}