Sound in mehreren Anwendungen parallel nutzen!
Habt ihr auch das Problem, dass ihr nur in einer Anwendung etwas hört?
Wenn ja, dann kann euch diese Seite weiterhelfen!
Voraussetzung ist, dass die Soundkarte funktioniert und
alsaconf als root ausgeführt wurde!
Außerdem solltet ihr zuerst
artsd ausschalten und alle Player auf ALSA umstellen, um zu testen, obs nicht auch so geht.
Das ganze funktioniert über das "dmix" Plugin und da dieses schon im System eingebaut ist, muss es nur mehr aktiviert werden. Dazu einfach im
/home des jeweiligen User eine Datei namens
.asoundrc anlegen
In diese werden folgende Zeilen eingetragen:
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.dsp0 {
type plug
slave.pcm "dmixer"
}
pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 8192
#periods 128
rate 44100
}
bindings {
0 0
1 1
}
}
ctl.mixer0 {
type hw
card 0
}
pcm.ossmix {
type dmix
ipc_key 1024 # must be unique!
slave {
pcm "hw:0,0" # you cannot use a "plug" device here, darn.
period_time 0
period_size 1024 # must be power of 2
buffer_size 8192 # dito. It
#format "S32_LE"
#periods 128 # dito.
#rate 8000 # with rate 8000 you *will* hear,
# if ossmix is used :)
}
# bindings are cool. This says, that only the first
# two channels are to be used by dmix, which is
# enough for (most) oss apps and also lets
# multichannel chios work much faster:
bindings {
0 0 # from 0 => to 0
1 1 # from 1 => to 1
}
}
Nach einem Neustart ist das
dmix als default in allen Anwendungen, die alsa verwenden. Damit alle Programme über alsa und dmix arbeiten müssen die meisten eingestellt werden.
Hab es mit Kanotix2005-1, 2005-2 und mit 2005-3 getestet.
Sound funktionierte überall parallel und auch Supertux war neben AmaroK zu hören!
Hier nun ein paar Anleitungen zu verschiedenen Programmen:
KDE:
Im Kontrollzentrum unter
Sound & Multimedia sind drei Einstellungen zu treffen:
1) Sound-System abschalten (Haken entfernen, so dass alles grau wird.)
2) Hab von xweber einen Tipp bekommen: Eine Datei namens "knwrapper.sh" im Verzeichnis /usr/local/bin/ anlegen und mit "chmod +x knwrapper.sh" ausführbar machen:
su
<passwort>
nano -w /usr/local/bin/knwrapper.sh
chmod +x /usr/local/bin/knwrapper.sh
In die Datei folgenden Inhalt einfügen (Variante 1)
#!/bin/bash
WAVE=aplay
OGG=ogg123
MP3=mpg123
if [ $# == 1 ]; then
FILETYPE=`file -b "${1}"`
if expr "${FILETYPE}" : ".*WAVE.*" >/dev/null 2>&1
then
${WAVE} "${1}" >/dev/null 2>&1
elif expr "${FILETYPE}" : ".*Ogg.*" >/dev/null 2>&1
then
${OGG} "${1}" >/dev/null 2>&1
elif expr "${FILETYPE}" : ".*MP3.*" >/dev/null 2>&1
then
${MP3} "${1}" >/dev/null 2>&1
fi
fi
bzw. folgenden Inhalt einfügen (Variante 2)
#!/bin/bash
WAVE=aplay
OGG=ogg123
MP3=mpg123
NULL=/dev/null
[ $# != 1 ] && exit 1
case $(file -b "$1") in
*WAVE*) $WAVE "$1" >$NULL 2>&1 & ;;
*Ogg*) $OGG -dalsa09 "$1" >$NULL 2>&1 & ;;
*MP3*|*MPEG*) $MP3 -oalsa09 "$1" >$NULL 2>&1 & ;;
esac
Variante 2 funktioniert mit folgenden MP3-Kennungen (file -b)
MPEG ADTS, layer III, v1, 128 kBits, 44.1 kHz, JntStereo
MP3 file with ID3 version 2.3.0 tag
Jetzt nur mehr im Kontrollzentrum unter Sound&Multimedia->Systemnachrichten->Wiedergabe-Einstellungen den externen Player setzen. Genauer gesagt, da einfach
knwrapper.sh eingeben und schon hat man den Sound.
Funktionieren sollten .wav, .mp3, .ogg -> wobei .wav immer geht!
XMMS:
Hier unter Optionen->Einstellungen (CTL+P) kann unter dem Register Audio-I/O-Plugins das Ausgabeplugin auf ALSA umgestellt werden (libALSA.so). Unter dem Punkt Konfigurieren muss als Audio-Gerät "default" eingetragen werden.
AmaroK:
Amarok kann normal kein Alsa. Daher muss das Xine-Plugin installiert sein. Man kann es als root mit
apt-get install amarok-xine
installieren. Nach einem Neustart der Anwendung kann man unter
Einstellungen->amaroK einrichten ...->Sound-System den xine-Treiber einstellen und anwenden. Nach dem Anwenden kommt das xine Menü und da müssen
Gerät für Monoausgabe und
Gerät für Stereoausgabe auf
default stehen, damit es funktioniert.
Kaffeine:
Da dieses Programm auch auf Xine aufbaut, muss auch hier
Gerät für Monoausgabe und
Gerät für Stereoausgabe auf
default stehen, damit es funktioniert.
Gaim:
Hier kann unabhängig von DMix in den Einstellungen unter Sounds als Kommando
aplay eingegeben werden. Danach sollte Gaim zusammen mit anderen ALSA Anwendungen Sound ausgeben können.
Firefox/Flashplayer:
Ein wenig knifflig scheint zuerst die Konfiguration des Flashplayers unter Firefox. Letztlich sind aber auch hier nur wenige Schritte notwendig:
1) Prüfen, ob das Programm
aoss installiert ist.
2) Wenn nicht:
3) Als root die datei /etc/mozilla-firefox/mozilla-firefoxrc in einem Editor öffnen
nano /etc/mozilla-firefox/mozilla-firefoxrc
4)
FIREFOX_DSP="auto" ändern nach
FIREFOX_DSP="aoss"
Weitere Programme:
Einfach schauen, dass sie ALSA verwenden und dort als Gerät "default" eingetragen ist. Die meisten Anwendungen haben dies bereits und sollten daher funktionieren.
lg
Raider700
p.s.: Anleitungen für andere Programme können gerne dazu eingetragen werden.
pp.s.: Wer Rechtschreibfehler findet, darf sie gerne behalten oder ausbessern ;-)
EDIT:
Eine weitere .asoundrc hat
pauge77 gepostet. Diese funktioniert auch mit mehreren Aufnahmequellen und verwendet das
dsnoop-Protokoll. Was dmix für die Ausgabe ist, ist dieses
dsnoop für den Eingang.
Skype und Xmms funktionieren dann auch parallel. Diese Datei sieht folgendermaßen aus:
pcm.card0 {
type hw
card 0
mmap_emulation true
}
pcm.!output {
type dmix
ipc_key 1234
ipc_key_add_uid 1
slave {
pcm "card0"
period_time 0
buffer_time 0
period_size 2048
buffer_size 32768
rate 48000
}
bindings {
0 0
1 1
}
}
#
# DSNOOP output device
#
pcm.!input {
type dsnoop
ipc_key 4321
ipc_key_add_uid 1
slave {
pcm "card0"
period_time 0
period_size 1024
rate 48000
}
}
#
# ASYM duplex device
#
pcm.!duplex {
type asym
playback.pcm "output"
capture.pcm "input"
}
#
# Make the duplex device default
#
pcm.!default {
type plug
slave.pcm "duplex"
}
#
# OSS Compability
pcm.!dsp0 {
type plug
slave.pcm "duplex"
}
ctl.!mixer0 {
type hw
card 0
}
EDIT:
Noch eine Variante von der ALSA-Homepage mit 5.1 Unterstützung (getestet mit CMI8738). Funktioniert aber nicht mit mehreren Aufnahmequellen.
pcm.dmixer {
type dmix
ipc_key 1024
ipc_key_add_uid false
ipc_perm 0666 # mixing for all users
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 8192
rate 44100
}
bindings {
0 0
1 1
}
}
pcm.dsp0 {
type plug
slave.pcm "dmixer"
}
ctl.mixer0 {
type hw
card 0
}
pcm.ossmix {
type dmix
ipc_key 1024 # must be unique!
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 8192
#format "S32_LE"
#periods 128 # dito.
#rate 8000 # with rate 8000 you *will* hear,
# if ossmix is used :)
}
bindings {
0 0
1 1
}
}
pcm.!default {
type plug
slave.pcm "dmixer"
type route # ab hier kommt der Teil für die 5.1 unterstützung
slave.pcm "surround51"
slave.channels 6
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
ttable.0.4 0.5
ttable.1.4 0.5
ttable.0.5 0.5
ttable.1.5 0.5
}
Ich hoffe, das hilft einigen ;-)
zurück