Erweiterte ALSA-Funktionen
Soundsysteme unter Linux
Der Linux-Kernel stellt grundsätzlich zwei verschiedene Audiosysteme zur Verfügung: ALSA (Advanced Linux Sound Architecture) und OSS (Open Sound System). Während OSS auf vielen UNIX-artigen Systemen eingesetzt wird, greift Debian, genau wie die meisten anderen Linux-Distributionen, zu ALSA als Standard-Soundsystem.
Besonders in Desktopumgebungen wird zusätzlich meistens ein Soundserver benutzt. Der Hauptgrund hierfür ist, dass viele Leute glauben, die gleichzeitige Verwendung des Audiogeräts durch mehrere Anwendungen sei nur mit einem solchen Soundserver möglich. Diese Aussage ist jedoch nicht korrekt. Für fast alle Anwendungsgebiete reicht ALSA alleine vollkommen aus. Durch das einfachere Setup ohne Soundserver ergeben sich außerdem weniger Probleme.
Dieser Artikel beschäftigt sich nicht mit den Grundlagen von ALSA. Es wird davon ausgegangen, dass die einfache Soundausgabe schon funktioniert und das Standard-Audiogerät korrekt gesetzt ist. In Systemen mit nur einem Audiogerät ist das fast immer der Fall.
Erweiterte Funktionen von ALSA
Speichern der Mixer-Level
Manchmal komt es vor, dass die Mixer-Level (Lautstärke) beim Hochfahren auf 0 gesetzt werden. Die Wiederherstellung der Lautstärke aus dem letzten Systemlauf übernimmt ein Init-Skript im Paket alsa-utils. Die einfache Installation genügt:
root@debian:~# apt-get install alsa-utils
Softwaremixing
Das Softwaremixing erlaubt die gleichzeitige Verwendung einer Soundkarte durch mehrere Anwendungen. Manche Karten unterstützen auch Hardwaremixing - dann ist diese Änderung nicht notwendig.
Das Softwaremixing übernimmt in ALSA das dmix-Plugin. Das Plugin gehört zum Standard-Installationsumfang und kann in der asoundrc-Datei direkt aktiviert werden. Im Normalfall soll dmix das Standard-Audio-Gerät sein. In /etc/asoundrc bzw. ~/.asoundrc muss dafür folgendes stehen:
pcm.!default { type plug; slave.pcm "plug:dmix"; }
Equalizer
Mittlerweile verfügt ALSA auch über einen systemweiten Equalizer. Das Plugin ist im Paket libasound2-plugin-equal
root@debian:~# apt-get install libasound2-plugin-equal
Das Plugin lässt sich einfach zusammen mit dem oben genannten dmix-Plugin in der asoundrc-Datei aktivieren:
ctl.equal { type equal; } pcm.plugequal { type equal; slave.pcm "plug:dmix"; } pcm.!default { type plug; slave.pcm plugequal; }
Danach steht in jedem ALSA-fähigen Mixer, z.B. alsamixer, ein zusätzlicher Reglersatz zur Verfügung.
user@debian:~$ alsamixer -D equal
Netzwerkstream
Die meisten Soundserver können einen Audio-Stream über das Netzwerk an einen anderen Rechner weitergeben. Mit ALSA-Bordmitteln ist das aber auch möglich. Die Übertragung funktioniert durch eine einfache Pipe zu jedem Rechner, der einen SSH-Server bereitstellt.
Zunächst muss auf dem abspielenden Rechner die Aufnahmequelle auf "Mixer" gesetzt werden. Dies kann mit jedem Mixer, z.B. alsa-mixer, geschehen. Danach kann der gesamte Systemsound aufgenommen werden und mit arecord und aplay durch eine einfache Pipe weitergegeben werden:
user@debian:~$ arecord -t wav -f cd | ssh host aplay
Der Vorteil an dieser Lösung gegenüber einem ausgewachsenen Soundserver ist, dass keine zusätzliche Software und keine zusätzlichen offenen Ports im Netzwerk bentigt werden. Die Lösung funktioniert, sobald ALSA und SSH funktionieren. Sie ist damit sicherer und robuster.