Erweiterte ALSA-Funktionen

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Wiki ‹ Multimedia und Spiele ‹ 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 Debianpackage.png 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 Debianpackage.png 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.