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!
Vorraussetzung ist, dass die Soundkarte funktioniert und "alsaconf" als root ausgeführt wurde!
Ausserdem 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 (nano -w .asoundrc). 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
}
}
(bash)
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 paralell 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 Innhalt 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 SU 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: "apt-get install alsa-oss"
>3) Als root die datei /etc/mozilla-firefox/mozilla-firefoxrc in einem Editor öffnen (zB "sudo 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 paralell. 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 ;-)