From Amarok Wiki


Unten befindet sich eine Beispielkonfiguration, die es dir ermöglicht das Dmix-Plugin zu verwenden.

  • Beachte, dass die folgende Anleitung nur notwendig ist, wenn das eingebaute dmix plugin der alsa-lib (libasound2 in Debian-Basierten System) nicht funktioniert! Du kannst auf dieses vordefinierte dmix plugin mit "plug:dmix" als virtuelles Alsa-Device zugreifen.

Du kannst die Konigurationsdatei entweder unter ~/.asoundrc speichern (hat nur effekt auf deinen Benutzer), oder in /etc/asound.conf (gesamtes System). Nach bearbeitung dieser Dateien, musst du nur das/die ALSA Programm/e neustarten.

pcm.ossmix {
   type dmix
   ipc_key 1024
   slave {
       pcm "hw:0,0"            # muss das richtige Gerät sein
       #period_time 0          # seit ALSA 1.0pre nicht mehr notwendig
       period_size 1024        # benutzte ein Vielfaches von 2
       buffer_size 4096        # muss ein Vielfaches der period_size sein
       #rate 44100             # nicht nötig, ALSA-lib kann diese Option steuern  
   }
   bindings {
       0 0
       1 1                     # binde nur die ersten 2 Kanäle
   }
}
pcm.duplex
{
   type asym
   playback.pcm "ossmix"
   capture.pcm "dsnoop"
}
# Alles sollte dmix sein, also definiere "default" neu:
# Beachte, dass das keine gute Idee ist, seitdem dmix keinen nmap Zugriff erlaubt
#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
}

Um zu überprüfen ob dmix läuft, kannst du 2 oder 3 Instanzen von "alsaplayer" (oder irgend ein anderes ALSA-Programm, z.B. Amarok) gleichzeitig laufen lassen:

alsaplayer -o alsa -d plug:ossmix some.mp3

Wenn du Tonverzerrungen beim Ausführen von prozessorintensiven Tasks, wie kompilieren oder nutzen von OpenGL Visualisierungen, dann kann das erhöhen der buffer_size in ~/.asoundrc helfen. Es sollte in Vielfachen von 2 erhöht werden zB:

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