Ardour 6 lässt sich mithilfe von Skripten in der Programmiersprache Lua schnell um neue Funktionen ergänzen.
Ardour, eine komplexe Software zur Audioaufnahme [1], war in LinuxUser bereits wiederholt [2] Thema [3]. Die wesentliche Bedienung von Ardour erfolgt über die ausgefeilte grafische Oberfläche. Mitunter ist das recht mühsam, und aus den sich oft wiederholenden Aktionen resultiert eine erhöhte Fehlerrate. Mit etwas Automatisierung lässt sich die Situation zumindest entschärfen.
Die Version 6 von Ardour bietet eine Schnittstelle für die Skriptsprache Lua (siehe Kasten “Was ist Lua?”). Lua-Skripte [4] erweitern Ardour um Funktionen rund um alle Vorgänge bei der Aufnahme, beispielsweise beim wiederholten Einsatz von Soundeffekten und Filtern. Im Folgenden erfahren Sie, wie ein Lua-Skript aussieht, was sich darüber in Ardour 6 automatisieren lässt, und wie Sie solche Skripte in Ardour 6 einbinden. Dabei müssen Sie allerdings ein paar Seiteneffekte im Auge behalten.
Was ist Lua?
Lua [5] (portugiesisch: Mond) entstand 1993 in Brasilien. Es weist viele Ähnlichkeiten zu Python und Ruby auf, ist jedoch nur imperativ angelegt und unterstützt keine Objektorientierung. Dafür funktioniert die Sprache plattformunabhängig und verwendet eine dynamische Typisierung. Eine Besonderheit von Lua im Vergleich zu anderen Skriptsprachen besteht darin, dass der Programmcode vor der Ausführung erst kompiliert wird. Damit laufen Lua-Programme wesentlich schneller als herkömmliche, interpretierte Skripte und genügen so den Echtzeitanforderungen bei der Musikproduktion, wo selbst komplexe Berechnungen nur Verzögerungen (Latenzen) von weniger als 10 Millisekunde verursachen dürfen. Listing 1 zeigt ein einfaches Lua-Skript mit einem Array (in Lua: Tabelle, in Python: Liste) namens instrumente, das die drei Elemente “Klavier”, “Pauke” und “Trompete” enthält (Zeile 7). Die Funktion printItem() gibt die einzelnen Elemente nacheinander aus (Zeile 3 bis 5). Adressieren lassen sich die Elemente über den Index, der als Laufvariable (Zeile 9) in einer While-Schleife (ab Zeile 10) über sie iteriert. Listing 2 zeigt die Ausgabe im Terminal.
Listing 1
Beispielskript
#!/usr/bin/lua
local function printItem(data)
print("Daten:", data)
end
instrumente = {"Klavier", "Pauke", "Trompete"}
local i = 1
while i < 4 do
printItem(pets[i])
i = i + 1
end
Listing 2
Ausgabe
$ lua function.lua
Daten: Klavier
Daten: Pauke
Daten: Trompete
Ardour und Lua
Lua umkreist den Kern von Ardour wie der Mond die Erde; alle Funktionen an der Oberfläche lassen sich über Lua-Skripte ansteuern. So konstruieren Sie aus vorhandenen Funktionen eigene Bedienelemente und automatisieren oft benutzte Abläufe in Form von Makros. Darüber hinaus kann Lua auch tieferliegende Funktionen des Ardour-Kerns an die Oberfläche holen. Libardour enthält diverse Manipulationsfunktionen für Audiodaten, die zum Beispiel den Mixer erst möglich machen.
Auf Basis dieser Funktionen programmieren Sie in Lua-Skripten auch Ardour-spezifische Audio-Plugins. Letztere fungieren als softwarebasierte Verbindungsstücke, die Ardour lädt. Damit erzeugen Sie beispielsweise verschiedene Audio- und MIDI-Effekte oder benutzen Audiodaten (Samples) so, als wären es virtuelle Instrumente.
Die schon vorhandenen, internen Lua-Plugins sehen Sie in der normalen Plugin-Übersicht (Abbildung 1). Dazu wählen Sie zuerst im Plugin-Manager Lua als Typ aus. Zu jedem Plugin gibt Ardour neben dem Namen, dem Ersteller und dem Typ auch die Kanäle aus, die das Plugin gerade verwenden. Die im Format LV2 [6] gehaltenen Plugins stellt unter Debian das Paket ardour-lv2-plugins [7] bereit. Neben Effekten und einfachen Instrumenten gibt es auch nützliche Helfer wie etwa einen Midi-Monitor, der den Signalfluss verschiedener Eingabegeräte sichtbar macht.

Abbildung 1: Die Plugin-Übersicht mit den Lua-basierten Plugins. Viele Funktionen sind bereits im Hauptprogramm als Lua-Plugin umgesetzt.
Neben LV2 akzeptiert Ardour Plugins nach den Standards LADSPA, AU (nur MacOS X, MIDI und Audio) sowie VST. Letzteres bezieht sich auf den VST-Standard von Steinberg.
Skripte selbst erstellen
Während sich die LV2-Plugins unter /usr/lib/lv2/ einsortieren, gehören selbst geschriebene Lua-Skripte ins Verzeichnis ~/.config/ardour6/scripts/. Sauber in Ardour integriert bekommen Sie Ihre eigenen Skripte am einfachsten, indem Sie den Skriptmanager über den Menüeintrag Bearbeiten | Lua Scripte | Skript Manager verwenden.
Die durchnummerierten Aktionen sorgen automatisch für die entsprechende Integration in die Bedienoberfläche unter Bearbeiten | Lua Scripte. Abbildung 2 zeigt den Skriptmanager mit der ausgewählten Aktion List Plugins (Aktion 2). Der Knopf Bearbeiten bringt Sie in ein separates Editorfenster, in dem Sie das Skript direkt modifizieren.

Abbildung 2: Über den Skript Manager gelingt das Einbinden und Bearbeiten der Lua-Skripte am einfachsten.
Erstellen Sie ein neues Plugin, kommen ein paar kleine Schritte hinzu. Zuerst markieren Sie die gewünschte Aktion im Audio-Track und wählen dann über das Kontextmenü und Hinzufügen/Setzen ein beliebiges Skript aus der Ausklappliste im Skriptmanager aus. Anschließend klicken Sie auf Bearbeiten.
Es öffnet sich ein einfacher Editor, in dem Sie das ausgewählte Skript bearbeiten und anpassen. Im Kopfteil des Skripts (im Handbuch als “Ardour Descriptor Table” bezeichnet) stehen verschiedene Bezeichner wie name, license, author und description. Listing 3 zeigt den Header des bereits mitgelieferten Skripts _channelstrip.lua.
Listing 3
Grundlegende Skriptdaten
ardour {
["type"] = "EditorAction",
name = "Channel Strip Setup",
license = "MIT",
author = "Ardour Team",
description = [[Add Compressor and EQ plugin to every selected track and if a bus name 'Reverb' exists post-fader reverb send]]
}
Als Typ (type) tragen Sie eine der Kategorien aus der Tabelle “Kategorien für Skripte” ein. Damit geben Sie an, wozu das Plugin gehört. Unter name hinterlegen sie einen selbst gewählten Namen für das Skript. Ideal dazu ist eine Art Kurzbeschreibung aus wenigen Worten, aus denen eindeutig hervorgeht, was das Skript leistet. Im Eintrag description steht dann mehr Platz für weiterführende Informationen zur Verfügung. Die beiden Einträge für license und author sind selbsterklärend.
|
Kategorie |
Typ |
Kurzbeschreibung |
|---|---|---|
|
Editor Action Scripts |
|
Aktionen, die vom Benutzer ausgehen, etwa Abkürzungen (“Shortcuts”). |
|
Editor Hooks/Callbacks |
|
Ereignisgesteuerte Aktionen für den Editor oder Mixer. |
|
Session Scripts |
|
Skripte, die Ardour zu Beginn einer Audiositzung ausführt. |
|
DSP Scripts |
|
Plugins für den Audio/Midi-Prozessor, Zugriff auf die aktuelle Ardour-Sitzung. |
|
Spezielle Modi |
||
|
Script Console |
– |
Integrierte Kommandozeile (via Menü). |
|
Commandline Tool |
– |
Ersatz für die grafische Oberfläche (via |
Unterhalb des Headers folgen die Anweisungen für die konkrete Funktion des Plugins. Ein minimales Beispiel für eine Funktion zum Zurückspulen zeigt Listing 4. Eine vollständige Beschreibung aller Klassen und Variablen liefert die Klassenreferenz im Ardour-Handbuch [8].
Listing 4
Rückspulfunktion
ardour {
["type"] = "EditorAction",
name = "Rewind",
}
function factory (unused_params)
return function ()
Session:goto_start() -- zurückspulen zum Anfang
end
end
Ein Klick auf Speichern erzeugt im Home-Verzeichnis ein neues Skript, das Sie sofort in Ardour unter dem in Schritt 4 vergebenen Namen als Plugin finden – sowohl im Skriptmanager, als auch via Menüeintrag. In Abbildung 3 ist es wie in Listing 3 benannt der Eintrag Channel Strip Setup, für Listing 4 wäre es Rewind.

Abbildung 3: Der in Ardour integrierte Editor bietet nur wenig Komfort, enthält jedoch nützliche Codeschnipsel und erlaubt, Skripte aus dem Editorfenster zu starten.
Skripte nachbearbeiten
Um selbst erstellte Skripte für Plugins anzupassen, können Sie prinzipiell jeden beliebigen Texteditor verwenden. Zum Experimentieren und für die ersten Schritte mit Lua-Plugins in Ardour genügt der einfache Editor jedoch vollkommen. Er bietet zwar nur wenig Komfort und einen recht überschaubaren Funktionsumfang, erlaubt aber den Aufruf eines Skripts direkt aus dem Dialog heraus.
Außerdem lassen sich etliche Standardoperationen aus den Ausklappmenüs rechts unten in der Ardour-Bedienoberfläche als Snippets in den Programmcode des Plugins einfügen. Zusätzlich bietet der Editor eine Konsole unter dem Editorfenster, in der Statusmeldungen signalisieren, was wie funktioniert und welche Ausgaben zu Fehlern das Plugin liefert.
Haken und Ösen
Ardour ist ein wenig eigen, wenn es um das Verarbeiten von Plugins geht. Es puffert die Skripte zur Laufzeit und liest die Skriptdatei nur dann neu ein, wenn Sie ein Skript einer Aktion neu zuweisen. Bereits zugewiesene Skripte bleiben intern in dem Zustand gespeichert, wie sie beim Programmstart vorlagen. Diese etwas umständliche Methode zur Initialisierung der Skripte dürfte mit dem Wunsch nach Stabilität zu tun haben.
Der enorme Funktionsumfang von Ardour 6 erlaubt das Aufnehmen und Bearbeiten von Gesang und Instrumenten samt Mix. Über die Lua-Schnittstelle können Sie dabei eigene Erweiterungen und Effekte ergänzen. Damit steht der individuellen Anpassung nichts mehr im Weg. Kommen dabei Fragen auf, helfen Ihnen die Teilnehmer auf dem Chat-Kanal auf Discourse [9] weiter. (cla/jlu)
Über die Autoren
Hartmut Noack arbeitet in Celle und Hannover als Dozent, Autor und Musiker. Unter http://lapoc.de finden Sie einige CC-lizenzierte Ergebnisse seiner Arbeit mit freier Musiksoftware. Frank Hofmann arbeitet zumeist von unterwegs aus als Entwickler, Trainer und Autor. Bevorzugte Arbeitsorte sind Berlin, Genf und Kapstadt.
Glossar
-
LV2
-
Das Kürzel LV2 steht für LADSPA Version 2 . Der Begriff LADSPA wiederum bezeichnet die Linux Audio Developer’s Simple Plugin API. LV2 beschreibt einen erweiterbaren, offenen Standard für Audio-Plugins. An einen einfachen Kern docken Sie komplexere, erweiterte Funktionen an.
Infos
-
Ardour: https://ardour.org
-
Ardour 6: Hartmut Noack, “Quantensprung”, LU 05/2021, S. 66, https://www.linux-community.de/45630
-
Workshop Midi-Controller: Hartmut Noack, “Alles unter Kontrolle”, LU 02/2019, S. 90, https://www.linux-community.de/40996
-
Lua-Skripting: https://manual.ardour.org/lua-scripting
-
Lua: http://www.lua.org
-
LV2: https://lv2plug.in
-
Plugins für Ardour 6 (DEB): https://packages.debian.org/bullseye/ardour-lv2-plugins
-
Lua Bindings Class Reference: https://manual.ardour.org/lua-scripting/class_reference
-
Discourse für Ardour: https://discourse.ardour.org





