Professionelles digitales Audio war früher die Domäne proprietärer Systeme, Linux hat aber mittlerweile aufgeholt. Heute lassen sich sogar Windows-spezifische VST-Plugins im Linux-Studio verwenden – wenn auch nicht ganz ohne Umstände.
Praktisch ist es, wenn sich Software durch kleine Zusatzprogramme erweitern lässt. Nur wenn man sie gerade braucht, lädt man sie in das laufende Programm, steckt sie also während des Betriebs ein – deshalb heißen sie Plugins. Auch in der Welt digitaler Audio-Software existieren solche kleinen Helfer. Sie realisieren zum Beispiel Spezialeffekte wie ein Reverb. Ein Plugin kann auch ein MIDI-Instrument wie einen polyphoner General-MIDI-Synthesizer realisieren, oder ein Interface für einen MIDI-Sequencer.
In der Musikwelt der Windows- und Macintosh-Systeme hat sich für Plugins das VST-API der Firma Steinberg als Standardinterface etabliert. Die erste Version wurde in den späten 90ern veröffentlicht; der aktuelle VST2-Standard erschien 1999. Die Linux-Welt kennt zwar eigene Audio-Plugin-APIs wie das recht verbreitete LADSPA [2], siehe den Kasten “LADSPA und Freunde”. Die schiere Menge an Audio-Plugins, die über das VST-API zur Verfügung stehen, lässt jedoch auch Benutzer nach der Windows-Technologie schielen. Dieser Artikel verrät, wie Sie Ihr Linux-System konfigurieren, um die riesige Sammlung von VST-Audio-Plugins zu unterstützen.
Instrumente als VST
Das VSTi-API erweitert die VST-Plugin-Definition, sodass das ein Plugin auch ein Instrument sein kann, also ein Synthesizer, Sampler oder Sequencer. Wie beim VST-API haben sich auch VSTi-Plugins zu Standardkomponenten der Win/Mac-Sound- und Musiksoftware entwickelt. Abbildung 1 zeigt als typisches VSTi-Instrument einen über MIDI gespielten Softwaresynthesizer. Dabei lassen sich seine Parameter in Echtzeit steuern (manuell oder per MIDI), teilweise sogar mit Mehrkanalausgabe.
Eine Lösung dafür, VST/VSTi-Plugins unter Linux einzusetzen, wurde ursprünglich von Kjetil Matheussen bei NOTAM [3], einem norwegischen Akustik- und Musikforschungscenter, entwickelt. Seine Bemühungen führten zum Vstserver, einer Client/Server-Architektur, die VST-Plugins ausführen kann. Der Vstserver greift auf die Fähigkeiten der Wine-Bibliothek zurück, um die Windows-DLL-Dateien zu benutzen. Kjetil hat außerdem zwei Clients für den Einsatz mit dem Vstserver programmiert: ein Objekt für die Synthese/Kompositionsumgebung Pd sowie ein LADSPA-Plugin, das als Host für VST-Plugins in Erscheinung tritt. Vor kurzem fügte er der Sammlung noch den VSTi-Client hinzu, der den Einsatz von VST-Instrument-Plugins unterstützt.
Nicht ohne meinen Compiler
Leider gibt es keine fertigen Pakete mit aktuellen Versionen des Vstserver. Zudem ist die Installation nicht ganz trivial, da sie stark von der verwendeten Wine-Version abhängt. Sie sollten deshalb die modifizierten Wine-Quellen des Vstserver-Autors verwenden. Um Vstserver auf Ihrem System zu installieren, absolvieren Sie die folgenden Schritte:
- Installieren Sie das neueste Wine-Paket
vstserver-wine-tar.bz2von Kjetil, das Sie wie die anderen nötigen Pakete unter [4] finden. - Kompilieren und installieren Sie auch die neusten
vstserver-,k_vst~-,ladspavst-undvsti-Pakete. Setzen Sie vor demmake installdie UmgebungsvariableVST_PATHauf das Verzeichnis, das die VST-Plugins enthält. - Starten Sie den Server im Quellverzeichnis.
- Starten Sie einen Client. Sie brauchen für
k_vst~das Programm Pd sowie einen passenden Host (wie beispielsweise Kjetils Version des Snd-Soundfile-Editors), wenn Sie das LADSPA-VST-Host-Plugin verwenden wollen. Der VSTI-Client ist ein Standalone-Programm.
Entgegen vielen Anleitungen benötigen Sie das offizielle VST-SDK von Steinberg bei der aktuellen Vstserver-Version nicht mehr. Es enthält bereits die beiden erforderlichen Header-Dateien. Sollte sich das bei zukünfigten Versionen mal wieder ändern, finden Sie das SDK unter [5].
LADSPA und Freunde
Anfang 2000 stellte der Entwickler Richard W. E. Furse einen ersten Entwurf für ein einfaches Linux-Audio-Plugin-API vor. Nach vielen Diskussionen auf der Linux-Audio-Developers-Mailingliste entstand schließlich LADSPA, das Linux Audio Developers Simple Plugin API [1].
Das Wort Simple ist dabei wörtlich zu nehmen: Die Plugins verzichten im Gegensatz zu vielen VST-Plugins auf komplexe Interaktionen mit dem Host. Allerdings bedeutet simpel auf keinen Fall schwach – tatsächlich gibt es viele hervorragende und leistungsfähige LADSPA-Plugins.
Die Einfachheit von LADSPA ist teilweise im Umgang mit der GUI begründet: Sie wird einfach ignoriert. Das GUI-Toolkit des Hosts muss eben eine Grundausstattung an Elementen mitbringen, wobei das Layout dem GUI-Programmierer überlassen wird. Im Gegensatz zur VST-Welt sehen LADSPA-Plugins oft ganz anders aus, wenn sie in unterschiedlichen Anwendungen ausgeführt werden, obwohl die Bedienung und Funktionen gleich bleiben sollten. Weil LADSPA keine GUI-Richtlinien kennt, ermöglicht es auch nicht-grafische Plugins.
Das API wurde von Entwicklern begeistert aufgenommen, und in den letzten vier Jahren hat sich der LADSPA-Support zu einer Selbstverständlichkeit für Linux-Musik- und Soundtools entwickelt. Unter den LADSPA-kompatiblen Anwendungen finden sich Festplatten-Recording-Systeme, digitale Audioprozessoren, Audio/MIDI-Sequencer, Software-Synthesizer, Soundfile-Editoren und Multimedia-Player.
Das Echtzeitverhalten der LADSPA-Plugins ist in der Regel hervorragend, eine ensprechende niedrige Latenz des Kernels sowie des ALSA- oder JACK-Systems vorausgesetzt. Das API selbst hat seit der Version 1.0 einige wesentliche Änderungen erfahren. Eine wichtige Erweiterung ist der Support für das Resource Description Framework (RDF) [6], einen XML-Dialekt, der in diesem Fall die Organisation von Plugins und die Einstellung der Parameter vereinheitlicht. Abbildung 2 zeigt die auf RDF basierende LADSPA-Plugin-Liste im Hydrogen-Drumcomputer.
Wenn Ihre Linux-Distribution für Linux-Audio optimiert wurde, ist LADSPA auf dem System bereits installiert und konfiguriert. Wer es selbst kompilieren muss oder will, kann aufatmen: LADSPA bleibt auch hier dem Prinzip der Einfachheit treu.
Downloaden Sie das Tar-Archiv mit dem Quellcode von http://www.ladspa.org, packen Sie es in Ihrem Home-Verzeichnis aus und wechseln Sie in das neue ladspa_sdk-Verzeichnis und dann in src. Editieren Sie das Makefile und führen Sie make aus, um das SDK zu erstellen. Werden Sie root und geben Sie make install ein. Anschließend können Sie LADSPA-Plugins installieren und benutzen.
Eine Sammlung von LADSPA-Plugins finden Sie unter http://linux-sound.org/ladspa.html. Sie sollten sich die Sammlung von Steve Harris anschauen, oder auch Tom Szilagyis TAP-Set, Fons Adriaensens exzellente Filter sowie die Sammlungen von Tim Goetze und Mike Rawes – probieren Sie einfach alle aus.
Abbildung 3 zeigt den TAP-Reverberator, im Audacity-Soundfile-Editor geöffnet und auf eine Sound-Datei angewandt.
Linux unterstützt noch ein paar andere Audio-Plugin-APIs. David Olofsons Multimedia Applications Integration Architecture (MAIA) war ein Versuch, die Mängel von LADSPA zu korrigieren. MAIA wurde als allgemeingültiges Multiplattform-API ausgelegt, wobei der Schwerpunkt auf Unix-Systemen liegt. Leider hat das MAIA-API die Entwickler nicht begeistern können, sodass das Projekt seit Anfang 2001 kaum Fortschritte gemacht hat.
Der neueste Kandidat in der Linux-Plugin-Arena stammt von den Entwicklern Chris Cannam (Rosegarden), Steve Harris (SWH-LADSPA-Plugins) und Sean Bolton. Ihr Disposable Soft Synth Interface (DSSI) ist als “LADSPA für Instrumente” konzipiert, wie Sie auf der DSSI-Website erfahren können [7]. DSSI ist als Lösung für verschiedene Unzulänglichkeiten des vorhandenen Linux-Softsynth-Supports konzipiert, vor allem in Bezug auf MIDI-Steuerung. Das Interface bietet außerdem eine Bridge für die Ausführung von VSTi-Plugins. Zum aktuellen Zeitpunkt wurde DSSI lediglich im Rosegarden-Sequencer implementiert und es bleibt noch abzuwarten, ob DSSI bei den Linux-Audiosoftware-Entwicklern auf Zuspruch stößt. Es handelt sich in jedem Fall um ein sehr nützliches und vielversprechendes API.
Abbildung 4 zeigt, wie Rosegarden mit einer Instanz von Sean Boltons xsynth, einem Proof-of-Concept-DSSI-Synthesizer-Plugin, ausgeführt wird.
Server und Client
Vstserver ist dafür konzipiert, Output aus Client-Anwendungen entgegen zu nehmen. Wie ich im vorhergehenden Abschnitt schon erwähnt habe, hat Kjetil zwie Clients für den Einsatz mit dem Vstserver entwickelt:
- ein Objekt für die Pd-Synthese/Kompositionsumgebung
- ein LADSPA-Plugin, das als Host für VST-Plugins auftritt.
Die folgenden Abschnitten beschäftigen sich mit den Vstserver-Client-Optionen.
Pd und das <C>k_vst~<C>-Objekt
Sie starten den Server, indem Sie in einem Terminal vstserver eingeben. Eine kurze Meldung bestätigt, dass der Server auf Client-Daten wartet. Wenn Sie das Pd-Paket [8] auf Ihrem System installiert haben, können Sie es mit der folgenden Befehlssequenz starten, um das Programm um die gewaltigen Fähigkeiten des k_vst~-Objekts zu erweitern:
pd -lib k_vst~
Diese Befehlssyntax geht davon aus, dass Sie Pd im eigenen Home-Verzeichnis gestartet haben; wenn Sie Pd an anderer Stelle starten, müssen Sie den kompletten Pfad zum Objekt angeben.
Betrifft Pd
Pd (Pure Data) stellt eine grafische Patch-Sprache zur Verfügung, die zum Aufbau von Netzwerken zur Audiosynthese dient. Audio-Komponenten werden über visuelle Stränge zu einem Pd-Patch zusammengefügt, wobei das Patch-Output letztendlich an die Audio-Geräte übertragen wird. Linux-Audio-Support umfasst außerdem die ALSA- und JACK-Systeme; 3D-Grafik wird von der GEM-Bibliothek unterstützt.
Abbildung 5 zeigt ein VST-Effekt-Plugin, das innerhalb eines einfachen Pd-Patches eingesetzt wird. Der Patch leitet eine Audio-Eingabe über das k_vst~-Objekt (das heißt über das VST-Plugin) und gibt sie über den Out-Port Ihrer Soundkarte aus. Sie können das VST-Plugin beeinflusse, indem Sie die Effektparameter regeln.
Details des hier beschriebenen Patchs finden Sie im Tutorial unter [11]. Die beste Audio-Qualität ergab sich bei der Verwendung von JACK zur Ausgabe, statt etwa ALSA (siehe den Kasten “Betrifft Linux-Soundsysteme”). Wenn Sie Probleme damit haben, dass der Sound unter ALSA abbricht, während Sie Ihre Plugins regeln, sollten Sie es mit JACK versuchen.
Betrifft Linux-Soundsysteme
Das ehemalige Standard-Soundsystem unter Linux, OSS/Free (Open Sound System), wurde in mittlerweile von ALSA (Advanced Linux Sound Architecture) abgelöst. ALSA nun das Standard-Soundsystem der Kernel-Serie 2.6. Es ist zwar möglich, LADSPA- und VST-Plugins unter dem ältern System auszuführen, aber es empfiehlt sich, ALSA als Basis für Ihr Audio- und MIDI-System zu verwenden.
ALSA besitzt ein eigenes Plugin-System, das seine Fähigkeiten erweitert. Obwohl es kein generisches API kennt, ist das System dennoch sehr nützlich. Zum Beispiel bietet einem das Dmix-Plugin Software-basiertes Mischen ohne Hardware-Support für mehrere Audio-Quellen. Unter normalen Umständen können viele Rechner zu einem Zeitpunkt nur eine Audio-Anwendung ausführen. Wenr aber das Dmix-Modul (in die ~/.asoundrc-Datei (siehe die ALSA-Dokumentation für weitere Einzelheiten) einträgt, kann ich mehrere Audiostreams abspielen.
JACK ist ein Beispiel für eine wirklich erstaunliche Linux-Audiosoftware-Entwicklung. Usprünglich vom Entwickler Paul Davis (Ardour, Softwerk) programmiert, hat es sich zum definitiven Sound-Server mit niedriger Latenz entwickelt. Es unterstützt Verknüpfung beliebiger JACK-Client-I/Os und bietet gleichzeitig eine Synchronisierung von JACK-fähigen Anwendungen. Bei professionellen Ansprüchen im Audio-Bereich ist JACK unverzichtbar.
Bei den beiden Programme artsd und esd handelt es sich um die Sound-Daemons für KDE respektive GNOME. Sie werden in der Regel für ziemlich einfache Anwendungen eingesetzt, obwohl sie beide über interessante Fähigkeiten in Bezug auf Desktop-Events verfügen (das aRts-System umfasst ein Plugin-API). Allerdings sind beide nicht für die professionelle Audioentwicklung konzipiert und sollten deaktiviert werden.
Der Ladspavst-Client
Vielleicht kommt es Ihnen etwas eigenartig vor, ein VST-Plugin über ein LADSPA-Plugin ausführen zu müssen, aber mit Kjetils ladspavst haben wir es mit einem Plugin zu tun, das als Host für andere Plugins auftritt. Abbildung 6 zeigt das NorthPole-Filter-Plugin, das über das LADSPA-Menü in einer angepassten Version des Snd-Soundfile-Editors aufgerufen wurde. Wie Sie anhand der Abbildung erkennen können, taucht jedes VST-Plugin in der Liste mit VST Plugin [plugin_name.dll] verfügbar auf vstserver auf. Wie erwähnt, hängt das Erscheinungsbild des Plugins vom GUI-Toolkit des Hosts ab, in diesem Fall das Motif-Toolkit. Allerdings bietet das Ladspavst-Plugin einen Schalter, sodass Sie die GUI des VST-Plugins selbst verwenden können.
VSTi-Plugins mit Vsti
Wie erwähnt, umfasst das Vstserver-System auch einen Vsti-Client, der die Möglichkeit bietet, VST-Instrumenten-(VSTi-)Plugins zu verwenden. Den Vsti-Client rufen Sie folgendermaßen auf:
vsti /path/to/plugin_name.dll
Sehen Sie noch einmal Abbildung 1 an. Dort sehen Sie, wie Vsti den Crystal-Synthesizer ausführt. Der Vstserver ist offen, und es ist das MIDI-Connections-Panel aus Qjackctl zu sehen, das das MIDI-Keyboard mit Crystal verbindet. Qjackctl umfasst außerdem ein Panel für Audio-Verbindungen, das eine grafische Schnittstelle für die Einrichtung von Audio-I/O-Verbindungen bietet.
Das FST-Projekt
Das FST-(FreeST-)System [8] bietet eine weitere Möglichkeit, VST/VSTi-Plugins unter Linux einzusetzen. Statt eines Servers implementiert es eine Bibliothek. Entwickler Paul Davis behauptet, dass FST “…eine passendere Lösung von Audioanwendungen ist, die viele VST-Plugins unterstützen müssen, weil sich die vom VSTserver verlangten Kontextänderungen nicht gut skalieren lassen”. Ungünstig ist laut Davis der Aspekt, dass “…ein sich fehlerhaft verhaltendes Plugin die Hostanwendung zum Absturz bringt, was von Vstserver vermieden wird”.
Das System umfasst zum momentanen Zeipunkt die libfst-Bibliothek sowie das Beispiel-Utility jack_fst, das VST/VSTi-Plugins lädt und ausführt. Um dieses System zu kompilieren, brauchen Sie eine komplette Wine- und JACK-Installation und die Dateien AEffect.h und aeffectx.h aus dem Steinberg-VST-SDK.
Die libfst-Funktionen lassen sich in Applikationen wie das Ardour-Festplatten-Recordingsystem, die Audiosynthese/Verarbeitungsumgebung gAlan und den Audio/MIDI-Sequencer Muse integrieren. VST-Plugins stehen dann in diesen Programmen genau wie native LADSPA-Plugins zur Verfügung. Mit dem Befehlszeilen-Starter jack_fst lassen sich VSTi-Plugins als Standalone-Instrumente ausführen. Dieses Beispiel ruft den Crystal-Synth auf:
jack_fst Crystal
Die Erweiterung .dll ist nicht erforderlich, aber Sie müssen unter Umständen den vollständigen Pfad zum Plugin-Verzeichnis angeben. Der JACK-Server muss laufen, und Sie müssen für die erforderlichen Audio- und MIDI-Verbindungen sorgen, die nicht automatisch hergestellt werden.
Bekannte Probleme
Sowohl Vstserver als auch Libfst hängen von bestimmten Wine-Versionen ab. Das FST-System läuft ziemlich gut unter manchen Wine-Version und stürzt bei anderen ab. Siehe dazu VST/Linux-Anleitung unter http://www.djcj.org/LAU/quicktoots/toots/vst-plugins/ für die neusten Meldungen zum Thema Wine-Kompatibilität und andere bekannte Probleme mit diesen Systemen.
Unplugged
Plugins erweitern den Funktionsumfang von Audioprogrammen beträchtlich. Durch eine einheitliche Architektur wie LADSPA lassen sich solche Effekte systemweit einsetzen. Wer auf die Vielfalt an VST-Plugins aus der Windows-Welt zurückgreifen will, findet in Vstserver und FST ansatzweise eine Lösung. Auch wenn beide Pakete noch nicht perfekt funktionieren, bringen Sie schon viele VST-Effekte unter Linux zum klingen – etwas Freude am Experimentieren vorausgesetzt.
Glossar
-
Reverb
-
Zu deutsch Hall. Ein akustisches Phänomen, bei dem zeitlich unregelmäßige und unterschiedlich laute Echos eine Raumwirkung erzeugen. Existiert auch als elektronisch nachgebildeter Effekt.
-
General-MIDI
-
Erweiterung des MIDI-Standards, der unter anderem Stimmen, Kanäle und Klänge von Instrumenten festlegt [1].
-
Latenz
-
Anwendungsunabhängig der Zeitraum zwischen dem Eintritt und dem Austritt eines Signals. In diesem Fall zwischen bezogen auf das Audiosignal und eine Plugin-Komponente. Je kleiner die Latenz, desto besser.
Infos
[1] General MIDI: http://www.midi.org/about-midi/gm/gminfo.shtml
[2] LADSPA: http://www.ladspa.org
[3] NOTAM: http://www.notam02.no
[4] Vstserver-Archiv: http://www.notam02.no/arkiv/src/
[5] VST Audio Plugins SDK 2.3 http://ygrabit.steinberg.de/users/ygrabit/public_html
[6] RDF: http://www.w3.org/RDF/
[7] DSSI: http://dssi.sourceforge.net
[8] FST-Homepage: http://linuxaudiosystems.com/fst/
[9] Die VST-Linux-Kompatibilitätsseite: http://www.djcj.org/LAU/ladspavst/
[10] KVR-Audio: http://www.kvraudio.com
[11] VST/VSTi-Plugins unter Linux nutzen: http://www.djcj.org/LAU/quicktoots/toots/vst-plugins/
[12] Pd: http://crca.ucsd.edu/~msp/software.html
[13] LAU (Linux Audio Users) Mailingliste: http://www.linuxdj.com/audio/lad/subscribelau.php3
[14] Die “Linux-Sound & Musikanwendungen”-Site: http://linux-sound.org










