Advanced Linux Sound Architecture: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) |
Michi (Diskussion | Beiträge) |
||
Zeile 86: | Zeile 86: | ||
{{Weblinks|{{url|CZ|ALSA Project|eng|http://www.alsa-project.org/|Advanced Linux Sound Architecture|sublink=<br> | {{Weblinks|{{url|CZ|ALSA Project|eng|http://www.alsa-project.org/|Advanced Linux Sound Architecture|sublink=<br> | ||
* [http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php asoundrc]}} | * [http://www.alsa-project.org/alsa-doc/doc-php/asoundrc.php asoundrc]}} | ||
{{url|AU|Mark Constable|eng|http://alsa.opensrc.org/index.php | {{url|AU|Mark Constable|eng|http://alsa.opensrc.org/index.php/.asoundrc|.asoundrc}} | ||
{{url_dewikipedia|Advanced_Linux_Sound_Architecture|Advanced Linux Sound Architecture}} | {{url_dewikipedia|Advanced_Linux_Sound_Architecture|Advanced Linux Sound Architecture}} | ||
}} | }} |
Version vom 27. März 2009, 10:49 Uhr
Die Advanced Linux Sound Architecture / ALSA löste das Open Sound System / OSS ab und ist seit Kernel 2.6 die offizielle Linux-Audioarchitektur. ALSA kommt mit Geräten vom Onboard-Chipsatz bis zur professionellen Multikanal-Audiokarte zurecht, für die es modularisierte Audiotreiber zur Verfügung stellt. Die Architektur ist threadsicher und arbeitet daher problemlos mit Mehrprozessorsystemen zusammen. Sie besitzt ausserdem die Fähigkeit zum Full Duplexing, also zum parallelen Aufnehmen und Abspielen.
Das ALSA-Paket enthält nicht nur die jeweils kartenspezifischen Kernelmodule, sondern auch eine Bibliotheksschicht im Userspace, die sich aus Plugins zusammensetzt und weite Teile der Funktionalität implementiert. Dabei bieten die Kernelmodule lediglich Hardware-bezogene Funktionen - Formatkonvertierungen, das Mischen von mehreren Audiospuren 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 auch die Hardware-Eigenschaften zu erfragen und Detaileinstellungen vorzunehmen. ALSA unterstützt zudem moderne Surround-Audiokarten.
ALSA bietet eine Reihe von Plugins.
Plugin | Beschreibung |
---|---|
Dmix | Mischt mehrere Ausgaben zu einem Audiostrom zusammen. |
Dsnoop | Vergibt einen Eingang an verschiedene Programme. |
Multi | Fasst mehrere Audiokarten so zusammen, dass sie sich wie ein Gerät ansprechen lassen. |
Route | Verteilt die Kanäle. |
Plug | Wandelt Audioformate um. |
Rate | Wandelt die Samplerate um. |
Meter | Ermöglicht Levelmeter per Software. |
Softvol | Betreibt im Userspace einen virtuellen Mixer, der einen in der Lautstärke angepassten Datenstrom an die Audiokarte weitergibt und so die Lautstärkeregelung der digitalen Quellen ermöglicht. |
Das ALSA-Paket enthält auch textbasierte Werkzeuge.
Plugin | Beschreibung |
---|---|
alsamixer | Ein Lautstärkeregler für die Befehlszeile. |
aconnect | Schaltet mehrere (virtuelle) Audiogeräte nach Bedarf in eine bestimmte Reihenfolge. Grafische Oberflächen wie Aconnectgui oder die Qt-Version Kaconnect erleichtern dies. |
Zur Erhaltung der Kompatibilität mit OSS wird über die Bibliothek "libaoss" eine Userspace-Emulation der OSS-Programmierschnittstelle zur Verfügung gestellt. So können OSS-basierte Anwendungen weiterhin auf die alte API zugreifen. Die entsprechenden Kerneltreiber müssen entweder einkompiliert oder als Modul geladen werden. Aus technischer Sicht spricht nichts dagegen, Module für beide Systeme parallel auf dem System zu halten. OSS operiert direkt auf der Kernelebene; ALSA arbeitet dagegen im userspace und stellt die meisten Funktionen über Bibliotheken bereit.
Konfiguration
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.
Als systemweite Konfiguration wird "/etc/alsasound.conf" verwendet, für die einzelnen Benutzer "~/.asoundrc".
Leerzeichen, neue Zeilen und Tabulatoren separieren Tokens, geschweifte Klammern starten und schliessen Blöcke, eckige Klammern definieren Felder. Es ist auch erlaubt, Tokens mit Kommas oder Doppelpunkten zu trennen oder Variablenzuweisungen mit Gleichheitszeichen zu kennzeichnen, jedoch nicht nötig. Folgende drei Ausdrücke sind identisch.
x {a 1 b 2}
x { a 1 b 2 }
x { a=1; b=2; }
Eine Definition beginnt mit "Typ.Name". Die verfügbaren Variablen hängen vom Typ ab.
Folgendes Beispiel konvertiert die Samplerate auf die üblichen 48 kHz eines DAT-Rekorders. Dabei wird ein PCM-Gerät namens "dat" vom Plugintyp "rate" definiert, das als Ausgabe im Abschnitt "slave" ein PCM-Gerät mit 48 kHz verwendet. Wenn ein programm jetzt "dat" mit beliebiger Samplerate (z. B. mit den üblichen 44,1 kHz von CD- oder MP3-Dateien) verwendet, konvertiert das Rate-Plugin dies auf DAT-gerechte 48 kHz.
pcm.dat { type rate slave { pcm hw rate 48000 } }
In folgendem Beispiel wird das Dmix-Plugin eingesetzt. Der Name "!default" setzt darin das Standardgerät. Es wird mit einer Instanz des DMix-Plugin verbunden, das wiederum an das echte Ausgabegerät "hw" verweist. Gibt es mehrere Geräte, legt der Ausdruck pcm "hw:0,0"
fest, dass ALSA speziell das erste verwendet. Das DMix-Plugin benötigt ebenso wie Dsnoop und Dshare einen IPC-Schlüssel. Dieser muss für jede Instanz eindeutig sein, da er bei der Interprozesskommunikation zur Identifikation dient.
pcm.!default { type plug slave.pcm { type dmix pic_key 1024 slave { pcm hw } } }
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|