Für das beste Betriebssystem der Welt ist auch ein breites Spektrum professioneller Audio-Anwendungen herangereift: vom Skript-gesteuerten Klangtüftler über DJ-Software bis zu Sequencern und Harddisk-Recording für den professionellen Einsatz im Studio.
Die meisten Applikationen hantieren mit mehr oder minder vielen Klangeffekten, meist Filtern und Oszillatoren jeder Couleur. Es ist wenig effektiv und läuft zudem dem Open-Source-Gedanken zuwider, wenn jedes Projekt die gleichen Funktionen programmiert - eine Plugin-Architektur liegt also nahe. Davon profitiert auch der Anwender, da er in weniger umfangreichen Programmen aufwändige Features nutzen kann, ohne sie neu übersetzen zu müssen.
Gerade fürs Digital Signal Processing (SDP, digitale Signalverarbeitung) bietet sich diese Architektur an: Ein digitales Audiosignal kann als kontinuierlicher Datenstrom betrachtet werden, der von einer Blackbox erzeugt oder verarbeitet wird, wobei der Benutzer den Klangcharakter durch Parameter regelt.
Die Entwicklung von digitalen Audio-Effekten und Oszillatoren ist ein sehr spezielles Feld. Einfache Schaltungen sind mit wenig Aufwand zu simulieren. Komplexere erfordern dagegen oft einige Kenntnisse in Signalverarbeitung und der zugehörigen Mathematik. In beiden Fällen lässt sich die Lösung aber meist unabhängig vom Einsatz beschreiben, ob der Computer nun in Echtzeit einen Raumhall simuliert oder eine Nacht lang nach ausgefeilten Regeln ein paar Minuten Klang errechnet.
Standard für Audio-Plugins
Seit dem Jahr 2000 verfügen Audio-Anwendungen unter Linux über eine eigene Softwareschnittstelle für eben diesen Zweck: LADSPA - Linux Audio Developer\'s Simple Plugin API. Anders als vergleichbare Lösungen auf proprietären Plattformen (VST, Direct-X) ist LADSPA konkurrenzlos und beliebt - alles was die Schnittstelle bereitstellt nutzen die Entwickler auch, den Rest implementieren sie selbst. Inzwischen existieren Plugins für beinahe alle Standardanwendungen. Die umfassendste Liste der verfügbaren Plugin-Bibliotheken bietet wahrscheinlich Dave Phillips\' Site zu Linux und Audio [1].
Einfache Philosophie
Das S für Simple in LADSPA verdient besondere Betonung: Das API ist tatsächlich sehr einfach gehalten, trotzdem deckt es ein überraschend weites Anwendungsfeld ab: Vom Effektprozessor (Beispiel »jack-rack«, [2]) bis zum kompletten Softwaresynthesizer (Beispiel »om-synth«, [3]) arbeiten inzwischen ganze Applikationen komplett auf der Basis von LADSPA-Plugins. Für die meisten Distributionen gibt es Pakete mit dem LADSPA-SDK sowie zahlreiche Plugin-Pakete. Die Homepage führt das Quellcode-Paket, das neben dem Header ein paar nützliche Utilities und Beispiel-Plugins enthält.
Eine LADSPA-konforme Plugin-Bibliothek ist ein Shared Object, eine dynamisch gelinkte Bibliothek, die ein oder mehrere Plugins enthält. Jedes Plugin definiert Methoden und dazu ein oder mehrere so genannte Ports (Software-Endpunkt für Audio-Eingangs- und Ausgangssignale), über die es Daten mit dem Host austauscht. Ein Host ist eine Anwendung, die das Plugin aufnimmt.
Die Headerdatei »ladspa.h« definiert das LADSPA-Interface. Die Audio- und Kontrolldaten deklariert der Programmierer gleichermaßen als »LADSPA_Data«. Der Header wiederum definiert »LADSPA_Data« als »float«, also als 32-Bit-Gleitkommazahl, was sich wegen der hohen Genauigkeit für die interne Verarbeitung von Audiodaten durchgesetzt hat.
Abbildung 1: Viele Audioprogramme unter Linux lassen sich mit LADSPA-Plugins erweitern, sofern der Programmautor dies vorgesehen hat. Der Screenshot zeigt einige Fenster des Drum-Computers Hydrogen. Links oben ist das Fenster zu sehen, das verfügbare Plugins und ihre Parameter auflistet.
LADSPA-Plugins bieten kein eigenes grafisches Interface an. Eins bereitzustellen und konkret zu gestalten bleibt dem Host-Programm überlassen, in dessen Kontext das Plugin arbeitet. Einerseits erleichtert das dem Plugin-Autor natürlich das Leben und erweitert das Einsatzgebiet auch auf textbasierte Hosts und Systeme ganz ohne Bildschirm. Andererseits setzt dieser Umstand auch Grenzen, beispielsweise wenn ein Parameter eines Plugins zweckmäßigerweise als Kurve dargestellt werden sollte.
In der Praxis ist diese Einschränkung meist weniger kritisch und im Gegensatz zur vorgerenderten Vielfenster-Welt von VST, wo ein schickes Äußeres oft als Verkaufsargument herhalten muss, gilt das einheitliche und Ressourcen-schonende GUI von LADSPA-Hosts manchem als ein willkommener Vorteil.