In einigen Fällen laufen gleichzeitig mehrere Xsessions mit verschiedenen Benutzern. Oft ist das Problem bei Umgebungen ohne Soundserver wie Pulseaudio oder ESD, dass ein Benutzer das Ausgabegerät blockiert und andere somit ohne Audio-Wiedergabe zurecht kommen müssen. Auch falls ein Musik-Daemon wie MPD über eigenen Benutzer läuft, kann es mit dem Xsession-Benutzer eine Schlacht ganz nach "wer zuerst kommt, mahlt zuerst" um das Gerät geben.
Eine mögliche 3-Schritte-Lösung für ALSA setzt auf der Benutzung des dmix-Plugins auf:
dmix-Plugin ist meist nur dafür bekannt, dass es mittels sog. Software-Mixing (für Karten, die kein Hardware-Mixing unterstützen) den gleichzeitigen Zugriff von mehreren Prozessen auf ein Ausgabegerät ermöglicht. Weniger bekannt ist, dass es auch mehreren Benutzer den gleichzeitigen Zugriff erlauben kann.
1. Verwendung von dmix in asound.conf
Ein relevanter Ausschnitt aus
/etc/asound.conf:
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.dsp0 {
type plug
slave.pcm "dmixer"
}
pcm.dmixer {
type dmix
ipc_key 1024 # Nummer muss unique sein
ipc_key_add_uid false
ipc_perm 0666 # Berechtigung - oktale Notation
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 8192
rate 48000 #oder 44100
}
}
ctl.dmixer {
type hw
card 0
}
ipc_key,
ipc_key_add_uid und
ipc_perm sind die "weniger bekannten" Einträge für das "Teilen" eines Software-Mixers (dmix) auch zwischen den Benutzern. Wichtig ist, bei mehreren Soundkarten müssen verschiedene ipc_keys gewählt werden.
2. ALSA als Default in /etc/libao.conf festlegen
Die geschieht mit dem Eintrag (ggf. bestehenden ändern):
default_driver=alsa09
Damit müssten die meisten ALSA-fähigen Programme defaultmäßig ALSA nutzen.
3. OSS Modul deaktivieren
Applikationen wie Flash-Player in Browsern nutzen OSS, scheren sich nicht um die asound.conf Einträge und blockieren das ganze Gerät. Das verhindert man mit dem Deaktivieren und Blacklisten vom OSS Modul. Unter Archlinux reicht ein Eintrag "!snd_pcm_oss" in das MODULE-Array. Wie das Modul in anderen Distributionen heißt und wie man Module in den Distributionen blacklistet (z.B. /etc/modprobe) wird eine kurze Recherche sicherlich offenbaren.
Einige Programme, die auf OSS angewiesen sind, können mit dem OSS-Wrapper von ALSA dennoch in der Regel weiterhin benutzt werden:
aoss Programmname
P.S.: Man soll anmerken, dass Software-Mixing einen Qualitätsverlust mitbringen kann/wird. Bei alltäglicher Arbeit mit Desktop-Lautsprechern ist dies allerdings nicht zu merken. Einer der Gründe ist z.B. das u. U. nötige Resampling des Signals auf die Rate, die in der asound.conf angegeben ist. Bei anspruchvollen Audio-Bearbeitung oder richtig guter Anlage sollte man sowieso hochwertigere Soundkarten (die meist Hardware-Mixing beherrschen) und evtl. sogar in Verbindung mit JACK nutzen.
Update: Damit es funktionert, muss man aufpassen, dass keine Applikation am dmix-Plugin vorbei, direkt auf die Hardware zugreift. Möglicherweise, wird man einigen Applikationen das dmix-Plugin als Ausgabegerät explizit mitteilen müssen.