Audioausgabe

Aus Mikiwiki
Version vom 10. Februar 2010, 03:08 Uhr von Michi (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Gerätetreiber im Kernel

Als grundlegende Abstraktionsschicht zwischen Hardware und Software existieren unter Linux zwei Architekturen:

  • Das Open Sound System / OSS diente bis Linux 2.4 als Standard-Audiotreiber im Kernel. Weil es auch für BSD und andere Unix-Dervate Implementationen dieser Architektur gibt, lässt sich auf OSS aufsetzende software einfach portieren.
  • Die Advanced Linux Sound Architecture / ALSA löste OSS mit dem Kernel 2.6 offiziell ab. ALSA kommt mit Geräten vom onboard-Chipsatz bis zur professionellen Multikanalsoundkarte zurecht, für die es modularisierte Audiotreiber zur Verfügung stellt. Die Architektur ist threadsicher und kooperiert daher problemlos mit Mehrprozessorsystemen. Sie besitzt zudem die Fähigkeit zum full duplexing, also zum parallelen Aufnehmen und Abspielen.

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 Programmierschnittstelle 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.

Soundserver

Als Daemons implementierte Soundserver regeln quasi als multi tasking layer die entsprechenden Anforderungen der Anwendungen an den Kerneltreiber. Zudem operieren die gängigsten Soundserver nach einem Client-Server-Modell, was die transparente Verteilung von Sound über ein Rechnernetz ermöglicht.

Das grosse Problem bei digitaler Musikproduktion besteht darin, die Zeitspanne klein zu halten, die verstreicht, bis Audiodaten von der Audiokarte beim Programm ankommen und umgekehrt. Die Verzögerung (Latenz) entsteht hauptsächlich durch Zwischenspeicherung der Daten. Bemerkbar macht sie sich immer dann, wenn Softwareeffekte in Echtzeit berechnet oder während des Abspielens neue Signale aufgenommen werden. Eine Verzögerung von über 10 Millisekunden ist für das menschliche Ohr hörbar und daher störend.

Für den Heimrechner wünscht sich der Anwender, dass der gerade erklingende Systemton nicht den MP3-Spieler blockiert (Stichwort "Device busy"). Die Linux-Soundsysteme OSS und ALSA erlauben aber von Haus aus nur je einer Anwendung den Zugriff. Die Lösung ist häufig einer der folgenden Soundserver, wobei nur JACK mit minimaler Latenz auch sehr hohen Ansprüchen genügt:

  • Der Enlightenment Sound Daemon / ESD wurde für die gleichnamige Benutzeroberfläche entwickelt und bildet heute einen Bestandteil des Gnome-Projekts. ESD beschränkt sich als reiner sound dameon auf die Verwaltung und Verteilung (auch via Netz) der entsprechenden Daten.
  • Der Analog Realtime Synthesizer / ARTS ist die Soundarchitektur von KDE und wird nicht mehr weiterentwickelt.
  • Das JACK Audio Connection Kit / JACK ist ein für Posixsysteme entwickelter Echtzeit-Soundserver, der unter Linux und Mac OS X läuft und als mögliche Ablösung für den älteren ARTS gilt. Er ist auf professionelle Anwendungen ausgerichtet, beherrscht volles multiplexing bei niedriger Verzögerung sowie fehlerfreies full duplexing; Anwendungen lassen sich sowohl in Standalone-Form als auch als Plugins einbinden; eine Master/Slave-Gerätekonfiguration ermöglicht simultane Operationen (im einfachsten Fall Start/Stop oder Pause) mit präzisem timing über mehrere Anwendungen, Komponenten oder Geräte hinweg.

Multimedia frameworks

Zunehmende Bedeutung erlangen in letzter Zeit auch unter Linux die Multimedia frameworks. Sie sollen - ähnlich wie die DirectX-Schnittstelle unter Microsoft Windows - eine einheitliche Schnittstelle für Hardware-Aufrufe bereitstellen. Zu den angesteuerten Geräten gehören meist Soundkarten, 2D/3D-Grafikhardware, joystick sowie Tastatur und Maus. Die bislang bekanntesten Vertreter sind

  • Das Gstreamer framework ist fest in Gnome integriert und beschränkt sich auf die Verarbeitung von Audio und Video.
  • Der Simple Directmedia Layer / SDL ist eine Multimediabibliothek, die für den Zugriff auf Eingabegeräte, 2D/3D-Grafikhardware und besonders Audiogeräte sorgt. SDL steht neben Linux auch für Microsoft Windows und Mac OS X zur Verfügung.