Der Alsa-Standard hat das Open Sound System weitgehend verdrängt. Die Alsa-Module verhüllen eine Plugin-Schicht, die umfassende Konfigurationsmöglichkeiten bietet.
Schon mit Kernel 2.4 setzten einige Distributionen Alsa ein. Vorreiter dabei war Suse Linux, das die Entwicklung des Soundsystems maßgeblich vorantrieb. Der Kernel 2.6 übernahm dann Alsa offiziell als Standard und löste damit das bisherige Open Sound System (OSS) des 2.4er Kernels ab.
Die Entwickler riefen Alsa vor allem ins Leben, um professionelle Anforderungen wie kürzere Latenzzeiten, Unterstützung von mehr als zwei Kanälen, hohe Sampling-Frequenzen und Auflösungstiefen sowie eine exaktere Hardwarekonfiguration zu verwirklichen. Aus diesem Grund gehören zum Alsa-Paket nicht nur die jeweils kartenspezifischen Kernelmodule, sondern auch eine Bibliotheksschicht im Userspace, die sich aus Plugins zusammensetzt und weite Teile der Funktionalität implementiert.
Arbeitsteilung
Im Unterschied zum Vorgänger OSS bieten die Kernelmodule von Alsa lediglich Hardware-bezogene Funktionen. Formatkonvertierungen, das Mischen von mehreren Tonspuren oder die Emulation von Mixern, wie sie bei OSS üblich sind, fällt nicht in ihre Zuständigkeit. Diese Aufgaben übernimmt stattdessen die Userspace-Bibliothek. Über sie sind ebenfalls die Hardware-Eigenschaften zu erfragen und Detaileinstellungen vorzunehmen. Im Gegensatz zum OSS unterstützt Alsa außerdem moderne Surround-Soundkarten.
Der Verzicht auf Zusatzfunktionen im Kernelmodul senkt die benötigte Rechenleistung und vermindert die Latenzzeiten. Dieses Konzept entspricht zudem der Maßgabe, im Kernelbereich nur die nötigsten Arbeiten stattfinden zu lassen. Den Modulentwicklern kommt es ebenfalls entgegen, da sie die genannten Aufgaben nicht mehr für jede Soundkarte einzeln programmieren müssen.
Alsa funktioniert auch ganz ohne besondere Einstellungen. Doch die Konfigurationsdateien ermöglichen es, beispielsweise die Kanäle einer Surround-Soundkarte zuzuordnen oder von der Hardware nicht unterstützte Features zu emulieren. Insbesondere bei Karten, die nur einen Stream abspielen können, hilft die Möglichkeit, Signalwege vorzukonfigurieren, Konvertierungen vorzunehmen und Effekte einzubinden.
Für diese Zwecke bietet Alsa eine Reihe von Plugins: DMix mischt mehrere Ausgaben zu einem Audiostrom zusammen. DSnoop vergibt einen Eingang an verschiedene Programme, das Multi-Plugin fasst mehrere Soundkarten so zusammen, dass sie sich wie ein Gerät ansprechen lassen, und Route verteilt die Kanäle. Über Plug konvertiert der Anwender Soundformate, über Rate die Samplingrate. Mit dem Alsa-Plugin namens Meter sind sogar Levelmeter per Software möglich.
Bei der neuesten Soundkarten-Generation fehlt häufig die Möglichkeit, die Lautstärke der digitalen Quellen zu regeln. Hierzu bietet Alsa ein neues Plugin namens Softvol. Es betreibt im Userspace einen virtuellen Mixer, der einen in der Lautstärke angepassten Datenstrom an die Soundkarte weitergibt.
Die vom Hersteller ausgelieferte Konfiguration befindet sich je nach Distribution im Verzeichnis »/usr/share/alsa« oder unter »/etc/alsa«. Im Unterverzeichnis »pcm« definiert sie die Aliase für Surround-Hardware: »default«, »left«, »right« und andere.
Konfiguration
Alsa verwendet als systemweite Konfiguration »/etc/asound.conf«, für die einzelnen Benutzer »~/.asoundrc«. Die Syntax ist dabei relativ einfach angelegt, Fehlermeldungen fallen allerdings entsprechend ungenau aus. Leerzeichen, neue Zeilen und Tabulatoren separieren Tokens, geschweifte Klammern starten und schließen Blöcke, eckige Klammern definieren Felder:
x {
a 1
b 2
}
Dieser Ausdruck ist identisch mit »x { a 1 b 2 }« in einer Zeile. Es ist zwar erlaubt, Tokens mit Kommas oder Semikolons zu trennen oder Variablenzuweisungen mit Gleichheitszeichen zu kennzeichnen, jedoch nicht nötig. Das obige Beispiel ist demnach äquivalent zu:
x {
a=1,
b=2;
}
Eine Definition beginnt mit »Typ.Name«. Die verfügbaren Variablen hängen vom Typ ab, eine vollständige Liste führt die Alsa-Dokumentation [2] auf. Das Beispiel aus Listing 1 konvertiert die Samplerate auf die üblichen 48 kHz eines DAT-Rekorders.
Der Eintrag in die Konfigurationsdatei aus Listing 1 definiert ein PCM-Gerät namens »dat« vom Plugin-Typ »rate«, das als Ausgabe im Abschnitt »slave« ein PCM-Gerät mit 48 kHz verwendet. Wenn ein Programm jetzt »dat« mit beliebiger Samplerate, beispielsweise mit den üblichen 44,1 kHz von CD oder MP3-Dateien verwendet, konvertiert das Rate-Plugin dies auf DAT-gerechte 48 kHz.
|
Glossar |
|---|
|
Die Sampling-Frequenz gibt an, wie oft pro Sekunde ein neuer Wert entweder abgetastet (Aufnahme) oder erzeugt wird (Wiedergabe). Gebräuchlich sind 44,1 kHz bei CD und MP3, 48 kHz bei DAT oder 96 kHz bei der Super-Audio-CD oder im Studio. Manche Soundkarten für den Studioeinsatz verarbeiten sogar bis zu 192 kHz. Die Auflösung bezeichnet in diesem Kontext die Anzahl der möglichen Abstufungen bei der Aufnahme oder Wiedergabe. Audio-CDs und die meisten Soundkarten verwenden 16 Bit (65536 Abstufungen), die Super-Audio-CD dagegen 24 Bit. Der Kanal steht für ein Audiosignal – bei Stereo-Aufnahmen gibt es davon zwei, bei Surround fünf bis sieben. Im Studio existieren praktisch beliebig viele, da jedes Instrument auf mindestens einem eigenen Kanal aufgezeichnet wird. |
Ein Beispiel für den Einsatz des DMix-Plugin, das die Daten mehrerer Programme zusammenmischt, zeigt Listing 2. Der Name »!default« setzt darin das Standardgerät. Es wird in dem Beispiel mit einer Instanz des DMix-Plugin verbunden, das wiederum an das echte Ausgabegerät »hw« verweist. Gibt es mehrere Geräte, legt folgender Ausdruck fest, dass Alsa speziell das erste verwendet:
pcm "hw:0,0"
Das DMix-Plugin benötigt ebenso wie DSnoop und DShare einen IPC-Key (im Beispiel »ipc_key 1024«). Dieser muss für jede Instanz eindeutig sein, denn er dient bei der Interprozesskommunikation zur Identifikation. Die Spezialparameter anderer Plugins verzeichnet die Alsa-Dokumentation [2]. Sie erfordern teilweise ausführliche Spezifikationen über die Verbindungen zwischen Geräten und Kanälen.
Das Alsa-Paket enthält einige textbasierte Werkzeuge, darunter Alsamixer, einen Lautstärkeregler für die Kommandozeile (Abbildung 1), und Aconnect, das mehrere (virtuelle) Audiogeräte nach Bedarf in eine bestimmte Reihenfolge schaltet. Grafische Oberflächen wie Aconnectgui (Abbildung 2, [4]) oder die QT-Version KAconnect erleichtern dies.

Abbildung 2: Mehr Komfort als ihr Kommandozeilen- Äquivalent Aconnect aus den Alsa-Utilities bietet die grafische Oberfläche Aconnectgui. Sie verbindet echte und virtuelle Audiogeräte.
Tonangebend
Alsa bietet auf gewöhnlichen Desktop-Systemen Komfort beim Einrichten, da es keine besondere Konfiguration voraussetzt. Anspruchsvollere Benutzer finden dennoch viele Möglichkeiten, die Einstellungen an die eigenen Erfordernisse und Geräte anzupassen. Gegenüber dem Vorgänger OSS bietet Alsa mehrere Vorteile. Dass es so viel Funktionalität wie möglich aus dem Kernel- in den Userspace auslagert, erleichtert die Programmierung der Module und entsprechender Anwendungen und erhöht Flexibilität und Stabilität. (csc)
|
Listing 2: Einsatz des |
|---|
01 pcm.!default {
02 type plug
03 slave.pcm {
04 type dmix
05 ipc_key 1024
06 slave {
07 pcm hw
08 }
09 }
10 }
|
|
Listing 1: Beispieleintrag in |
|---|
01 pcm.dat {
02 type rate
03 slave {
04 pcm hw
05 rate 48000
06 }
07 }
|
|
Infos |
|---|
|
[1] Alsa: [http://www.alsa-project.org] [2] Asoundrc: [http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php] [3] Asoundrc-Wiki: [http://alsa.opensrc.org/index.php?page=.asoundrc] [4] Aconnectgui: [http://www.iua.upf.es/~mdeboer/projects/aconnectgui] |
|
Der Autor |
|---|
|
René Rebe ist seit 1997 im Linux-Umfeld aktiv. Er ist einer der Hauptentwickler des Distributionsbaukastens T2 und arbeitet bei vielen anderen Projekten mit. |







