Advanced Linux Sound Architecture: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
 
Die <b>Advanced Linux Sound Architecture / ALSA</b> 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.
 
Die <b>Advanced Linux Sound Architecture / ALSA</b> 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:
+
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.
* <b>Dmix</b> mischt mehrere Ausgaben zu einem Audiostrom zusammen
+
 
* <b>Dsnoop</b> vergibt einen Eingang an verschiedene Programme
+
ALSA bietet eine Reihe von Plugins.
* <b>Multi</b> fasst mehrere Soundkarten so zusammen, dass sie sich wie ein gerät ansprechen lassen
+
 
* <b>Route</b> verteilt die Kanäle
+
{| class=wikitable width=100%
* <b>Plug</b> konvertiert Soundformate
+
! width=10% | Plugin !! Beschreibung
* <b>Rate</b> konvertiert die Samplingrate
+
|-
* <b>Meter</b> ermöglicht Levelmeter per Software
+
| <b>Dmix</b> || Mischt mehrere Ausgaben zu einem Audiostrom zusammen.
* <b>Softvol</b> betreibt im Userspace einen virtuellen Mixer, der einen in der Lautstärke angepassten Datenstrom an die Soundkarte weitergibt und so die Lautstärkeregelung der digitalen Quellen ermöglicht
+
|-
 +
| <b>Dsnoop</b> || Vergibt einen Eingang an verschiedene Programme.
 +
|-
 +
| <b>Multi</b> || Fasst mehrere Audiokarten so zusammen, dass sie sich wie ein Gerät ansprechen lassen.
 +
|-
 +
| <b>Route</b> || Verteilt die Kanäle.
 +
|-
 +
| <b>Plug</b> || Wandelt [[Audioformat]]e um.
 +
|-
 +
| <b>Rate</b> || Wandelt die [[Samplerate]] um.
 +
|-
 +
| <b>Meter</b> || Ermöglicht Levelmeter per Software.
 +
|-
 +
| <b>Softvol</b> || 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.
 
Das ALSA-Paket enthält auch textbasierte Werkzeuge.
* <b>alsamixer</b> ist ein Lautstärkeregler für die Befehlszeile
+
 
* <b>aconnect</b> schaltet mehrere (virtuelle) Audiogeräte nach bedarf in eine bestimmte Reihenfolge. Grafische Oberflächen wie <b>[http://www.iua.upf.es/~mdeboer/projects/connectgui Aconnectgui]</b> oder die Qt-Version <b>Kaconnect</b> erleichtern dies.
+
{| class=wikitable width=100%
 +
! width=10% | Plugin !! Beschreibung
 +
|-
 +
| <b>alsamixer</b> || Ein Lautstärkeregler für die Befehlszeile.
 +
|-
 +
| <b>aconnect</b> || Schaltet mehrere (virtuelle) Audiogeräte nach Bedarf in eine bestimmte Reihenfolge. Grafische Oberflächen wie <b>[http://www.iua.upf.es/~mdeboer/projects/connectgui Aconnectgui]</b> oder die Qt-Version <b>Kaconnect</b> 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.
 
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.

Version vom 25. Januar 2009, 22:40 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.

Inhaltsverzeichnis

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

Vorlage:dewi