![]() |
|
||||||||||||||||||
|
|||||||||||||||||||
|
|||||||||||||||||||
Carsten Schnober
Schon vor dem Vormarsch des PCs vom Arbeits- ins Wohnzimmer gehörten Klänge fest dazu: Angefangen mit der Startfanfare früherer Windows-Versionen kamen bald die zu Napster-Pionierzeiten freigiebig getauschten MP3-Songs dazu. Unter Linux liegen zwischen den Abspielprogrammen des Desktops und der Sound-Hardware mehrere Ebenen.
Ein Klick auf Play im MP3-Player auf dem Desktop sorgt direkt für musikalischen Genuss aus den Boxen -- die richtige Konfiguration vorausgesetzt. Dass zwischen der digitalen Musikdatei und den hörbaren Klängen mehrere Programme eingreifen, bemerkt der Endanwender im Idealfall nicht.
Liegt eine abzuspielende Sound-Datei nicht im Rohformat wie beispielsweise in Wave-Dateien (.wav) vor, wandelt eine Anwendung wie Juk oder Amarok sie zunächst so um, dass die Sound-Karte mit den gelieferten Informationen etwas anfangen kann. Komprimierte Formate wie MP3- oder Ogg-Vorbis-Dateien muss sie dazu zunächst auspacken. Jedes Abspielprogramm benötigt dazu eine Programmbibliothek, die das jeweilige Kompressionsverfahren kennt und die Daten für die Dauer des Abspielens wieder dekomprimiert (siehe Kasten Codecs).
| Codecs |
|
Das Wort Codec steht für Coder und Decoder, die allgemein gesprochen Daten kodieren beziehungsweise dekodieren. Musik- sind ebenso wie Videodateien durch spezialisierte Verfahren sehr stark komprimiert, um die meist sehr großen Datenmengen platzsparend zu speichern. Damit eine Anwendung eine kodierte Datei abspielen kann, muss sie diese zunächst dekodieren; dazu benötigt sie den entsprechenden Codec. Auch bei MP3 handelt es sich um ein auf Klangdateien spezialisiertes Kompressionsverfahren. Es komprimiert die Rohdaten nicht nur, wie es beispielsweise die bekannten Archivformate Zip, GZip, oder BZip2 tun. Außerdem entfernt MP3 Frequenzen, die für Menschen kaum hörbar sind. Die zur Wiedergabe von MP3-Dateien notwendige Programmbibliothek findet man im Paket mad. Es liegt vielen Distributionen, darunter Suse Linux und Fedora Core nicht mehr bei, da der MP3-Kompressionsalgorithmus in einigen Ländern patentierte Verfahren verwendet -- für die Benutzung und Weiterverbreitung könnten Lizenzinhaber, darunter das Fraunhofer-Institut, Gebühren verlangen. Aus diesem Grund haben sich viele Linux-Distributoren entschieden, weder das rechtliche Risiko einzugehen noch eventuell anfallende Lizenzgebühren zu bezahlen, und verzichten zum Unbehagen ihrer Benutzer deshalb gänzlich auf die MP3-Wiedergabe. Sie raten dagegen zur freien Alternative Ogg Vorbis. Dieses Verfahren funktioniert ähnlich wie MP3, greift jedoch ausschließlich auf freie Kompressionsalgorithmen zurück. Ogg Vorbis setzt lediglich das standardmäßig installierte Paket libogg voraus. |
Wenn die Audiodaten abspielbereit vorliegen, nimmt der Audio-Player vom Benutzer eingestellte Klangmanipulationen vor, die von der Lautstärke über angepasste Höhen und Tiefen bis zu Effekten reichen. Anschließend leitet er sie ans Sound-System weiter.
Das Desktop-System KDE bringt ein eigenen Sound-System namens Arts mit. Seine Aufgabe besteht darin, die Ausgaben verschiedener Sound-Anwendungen zu koordinieren, und es nennt sich deshalb auch Mischer. So können beispielsweise, während der MP3-Player Musik spielt, gleichzeitig Systemklänge ertönen. Dazu müssen jedoch die Programme selbst in der Lage sein, ihre Tonausgabe an den Arts-Sound-Server zu delegieren. Bei KDE-Programmen ist dies ohnehin der Standardfall, vom Desktop unabhängige Anwendungen bieten für den Betrieb unter KDE häufig ein Arts-Plugin.
Auch Arts reguliert die Lautstärke über den gewöhnlich in der KDE-Leiste verankerten KMixer. Anschließend leitet es den aus den Sound-Ausgaben der Desktop-Programme gemischten Klangstrom an die nächste Instanz weiter: ALSA [1]. Die Advanced Linux Sound Architecture erfüllt unter anderem dieselbe Aufgabe wie unter Windows ein Sound-Karten-Treiber. Abhängig vom vorhandenen Kartentyp kommt ein passendes Kernel-Modul zum Einsatz, das für die Kommunikation mit der Hardware sorgt.
Der Zwischenschritt über Arts ist vor allem deshalb notwendig, weil ohne weitere Maßnahmen jeweils nur eine Anwendung exklusiven Zugriff auf die Sound-Karte hat. Im beschriebenen Standardfall übernimmt Arts diese Rolle; so können mehrere Programme gleichzeitig Sounds abspielen, denn ausschließlich Arts gibt Töne direkt an ALSA weiter.
Der gezeigte Ablauf vom Abspielprogramm über Arts und ALSA zur Sound-Karte funktioniert nur, wenn alle beteiligten Anwendungen mitspielen. Probleme tauchen vor allem im Zusammenhang mit Sound-Programmen ohne Arts-Ausgabemöglichkeit auf. Versucht eine Anwendung, während Arts läuft, direkt auf die Sound-Karte zuzugreifen, führt das meist zu hörbaren Verzögerungen oder gänzlicher Stille.
Als erster Schritt zur Problembehebung empfiehlt sich ein Blick in die Programmkonfiguration. So besitzen beispielsweise die Video-Player Xine und MPlayer die Option, die Tonspur über Arts auszugeben (Abbildungen 1 und 2).
Abb. 1: Xine bietet Klangausgabe über das KDE-Sound-System Arts an. So kommt es nicht zu Konflikten mit der Desktop-Umgebung. |
Abb. 2: Auch MPlayer gibt die Tonspur optional an Arts aus. Auf der Kommandozeile erreicht man das über den Aufruf "mplayer -ao arts". |
Schwieriger gestaltet sich die Konfliktlösung, wenn eine Anwendung keine Arts-Ausgabemöglichkeit besitzt. Ist der Verzicht auf das Programm keine Option, bleibt nur der Weg, ihm den Exklusivzugriff auf die Sound-Karte zu gewähren und Arts auszuschalten (siehe Kasten Arts-Server ausschalten, Abbildung 3).
| Arts-Server ausschalten |
|
Wenn Sie KDE ohne den Standard-Sound-Server betreiben, ist der Weg zur Sound-Karte für Programme ohne Arts-Unterstützung frei. Starten Sie dazu das KDE-Kontrollzentrum. Im Abschnitt Sound & Multimedia / Sound-System finden sie im Reiter Allgemein die Option Soundsystem aktivieren (Abbildung 3). Ein Klick auf Anwenden speichert die Änderung und beendet den Arts-Server. Nun müssen Sie jedoch auch andere Anwendungen, die bislang auf Arts gesetzt haben, auf die ALSA-Ausgabe umkonfigurieren. Bei den KDE-Multimedia-Standardanwendungen ist das nicht immer möglich. Die Option Autom. abschalten, wenn inaktiv für im selben Reiter bietet einen Kompromiss: Aktivieren Sie diese und tragen eine Zeit ein, beendet sich das KDE-Sound-System automatisch, wenn keine Anwendung in der eingestellten Zeitperiode Arts verwendet hat. Das bedeutet, dass dann andere Anwendungen die Sound-Karte exklusiv nutzen können. Sobald dann eine KDE-Applikation über Arts Töne abspielt, startet der Sound-Server wieder -- falls er nicht durch Programme blockiert wird, die die Sound-Karte beanspruchen. |
Mit Einführung von Version 2.6 des Linux-Kernels löste das ALSA-System seinen Vorgänger OSS (Open Sound System) ab. Gründe für diesen Schritt waren die höhere Zahl durch ALSA unterstützter Sound-Karten und der flexible Aufbau von ALSA, das sich durch Plug-Ins erweitern lässt. Die von Ihrem System eingesetzten ALSA-Kernel-Module finden Sie über den Kommandozeilenbefehl lsmod (Abbildung 4). Dieser liefert eine Liste aller geladenen Kernel-Module -- die von ALSA beginnen mit snd.
Die Liste der ALSA-Module umfasst meist zahlreiche Einträge. Neben den Hardware-Treibern finden sich darunter Erweiterungen; beispielsweise ermöglicht das Modul snd_pcm_oss alten Nicht-ALSA-Anwendungen auf die Sound-Hardware zuzugreifen, als handelte es sich um ein OSS-System. Mit Herausgabe der neuesten Kernel-Version verwiesen die Programmierer OSS vor einigen Wochen endgültig aus dem Standard-Linux, bislang existierte es parallel zu ALSA weiterhin optional. Lediglich einige Modul für exotische Hardware, die ALSA nicht unterstützt, bleiben erhalten.
Für einen grundlegenden Vorteil von ALSA gegenüber OSS sorgt das DMix-Plug-In. Diese Erweiterung hebt die Einschränkung auf, dass jeweils nur ein Programm auf die Sound-Karte zugreifen kann, indem es ALSA mit einem eigenen Mixer versieht. Allerdings funktioniert dies nicht mit allen Sound-Karten und nur mit Anwendungen, die das DMix-Plugin kennen und nutzen. Da viele Programme davon noch keinen Gebrauch machen, verwenden alle gängigen Distributionen und Desktop-Systems nach wie vor einen Mixer wie Arts.
Auch zum Einsatz von Arts gibt es zahlreiche Alternativen. Die Desktop-Umgebung Gnome setzt an Stelle von Arts das Programm ESound (ESD) [2] ein, das ebenso wie Arts funktioniert: Anwendungen geben ihre Klänge an den ESD-Server aus, der sie mischt und ans ALSA-System weiterreicht. Ein junges Projekt mit ähnlicher Funktionalität ist Jack [3]. Die Motivation für seine Gründung lag vor allem in der Unzufriedenheit mit den etablierten Lösungen. Jack ist schneller und beim Mischen mehrerer Klangquellen exakter, allerdings noch nicht fertig und deshalb bislang selten im Einsatz.
Ein umfassende Multimedia-Lösung möchte dagegen die GStreamer-Umgebung präsentieren. Dieses Projekt kommt ebenfalls im Gnome-Desktop zum Einsatz. Es implementiert nicht nur einen Sound-Mixer, sondern übernimmt auch direkt das Dekodieren -- nicht nur von Audio-, sondern auch von Videoformaten. GStreamer-Anwendungen benötigen somit keine weiteren Kenntnisse über die zu verwendenden Codecs beim Abspielen verschiedener Dateiformate. Auf der anderen Seite bietet GStreamer diverse Output-Plug-Ins und lässt sich mit Gnomes ESound und Arts verwenden oder kommuniziert direkt mit ALSA.
Der Hauptgrund für die zahlreichen alternativen Vorgehensweisen ist, dass bisher keine Lösung alle Benutzer zufriedenstellen konnte. Mängel in den bestehenden Lösungen treiben Programmierer immer wieder dazu, neue Ansätze zu starten. Das KDE-Projekt hat sich nach dem Ausstieg des Hauptentwicklers von Arts entschieden, voraussichtlich ab KDE-Version 4 eine neue Alternative zu verwenden. Welche das sein soll, darüber herrscht aber noch Uneinigkeit.
Zum bloßen Abspielen von Sounds genügen normalerweise alle erwähnten Lösungen wie das KDE-eigene Arts. Aufwendige Anwendungen stoßen jedoch auf Probleme wie die teilweise recht großen Verzögerungen; auch die Qualität und die zeitliche Präzision von Aufnahmen leiden häufig unter diesem Problem.
Wer bei einzelnen Programmen keinen Sound hört, sollte zunächst deren Konfiguration überprüfen und als Output Arts einstellen. Falls dies nicht funktioniert, hilft nur, Arts auszuschalten und auch alle anderen Anwendungen auf direkten ALSA-Zugriff umzustellen. (csc)
| Infos: |
|
[1] ESound: http://www.tux.org/~ricdude/EsounD.html
[2] ALSA: http://www.alsa-project.org [3] Jack: http://jackit.sourceforge.net |
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.
Druckerfreundliche Version |
Feedback zu dieser Seite |
Datenschutz |
© 2010 Linux New Media AG |
Last modified: 2007-04-05 11:24
[Linux-Magazin]
[LinuxUser]
[Linux-Community]
[Admin-Magazin]
[Ubuntu User]
[Linux Events]
[Linux Magazine]
[Ubuntu User]
[Admin Magazine]
[Linux Magazine Poland]
[Linux Community Poland]
[Linux Magazine Brasil]
[Linux Magazine Spain]
[Linux Technical Review]