Skripte (Lua) und Kommandozeile
Skript-Manager
Skripte → Skript-Manager … öffnet das Verwaltungsfenster: links die Skripte des Songs mit Importieren … (eine .lua-Datei in den Skriptordner kopieren), Ordner öffnen (Skriptordner im Explorer), + Neu, Beispielskript und Werkzeug-Skripte; Doppelklick führt ein Skript aus. Rechts steht der Editor des markierten Skripts mit Farben für den Lua-Code (Schlüsselwörter, Zeichenketten, Zahlen, Kommentare, daw-Aufrufe); Speichern (Strg+S), Ausführen (speichert zuerst), Verwerfen, Umbenennen und Löschen (mit Rückfrage). Das Beispielskript legt keine Spuren mehr an, es listet nur die Spuren und ihre Clips.
Lua-Skripte
Skripte liegen im Song unter script/*.lua (ältere Songs: scripts/) und erscheinen im Menü Skripte. Beispielskript anlegen erzeugt scripts/beispiel.lua. Ein Skript liest eine Kopie der Sitzung und liefert Befehle; das Ergebnis ist ein Rückgängig-Schritt. Bei einem Fehler (Syntax, Laufzeit, Zeit, Speicher, ungültiger Befehl) bleibt das Projekt unverändert.
io, os, require, loadfile fehlen), 5 Sekunden Laufzeit, 64 MB Speicher, Skriptdatei höchstens 1 MB. Skripte laufen nie im Audio-Thread.Befehle und Abfragen (daw.…)
| Aufruf | Wirkung |
|---|---|
daw.rate, daw.seconds(s) | Abtastrate (44100) und Umrechnung Sekunden → Samples |
daw.log(…) | Text in die Skriptausgabe |
daw.tempo() | Tabelle mit bpm, num, den |
daw.tracks(), daw.clips(spur), daw.markers() | Spuren, Clips einer Spur (Start, Länge, Quellversatz, Gain, Lane) und Marker lesen |
daw.add_track(name), daw.add_folder(name), daw.rename_track(id, name), daw.set_parent(id, ordner) | Spuren anlegen, umbenennen, in Ordner legen |
daw.set_gain(id, gain), daw.set_pan(id, pan), daw.set_mute, daw.set_solo | Mixer-Werte einer Spur |
daw.set_tempo(bpm, zähler, nenner) | Tempo und Taktart |
daw.split_clip(id, position), daw.move_clip(id, start, spur?), daw.remove_clip(id) | Clips bearbeiten (Positionen in Samples) |
daw.add_marker(name, position), daw.set_loop(von, bis) | Marker und Schleife |
Die genaue Liste steht in crates/rdaw-script/src/lib.rs; neue Aufrufe kommen dort hinzu.
-- Beispiel: Spur anlegen und Spuren mit ihrer Clipzahl auflisten
local id = daw.add_track("Klick")
for i, t in ipairs(daw.tracks()) do
daw.log(t.name, #daw.clips(t.id))
end
daw.add_marker("Refrain", daw.seconds(32))
Werkzeuge: Noten bearbeiten, Auswahl, Parameter
Skripte können MIDI-Noten lesen und schreiben, sehen die Auswahl und fragen vor dem Lauf Werte in einem Dialog ab. Damit entstehen eigene Werkzeuge, die du mit Rechtsklick auf einen MIDI-Clip aufrufst. Alles bleibt ein Rückgängig-Schritt (Befehle und neue MIDI-Inhalte zusammen); bei einem Fehler ändert sich nichts.
Skripte → Werkzeug-Skripte anlegen legt sieben fertige Werkzeuge im Skriptordner an (vorhandene Dateien bleiben unberührt): Humanize (Anfang und Anschlag zufällig streuen, mit festem Zufallswert wiederholbar), Skala erzwingen (jede Note auf den nächsten Ton einer Skala: Dur, Moll, Pentatoniken, Dorisch, Blues) Arpeggio (Akkorde in Einzeltöne zerlegen: aufwärts, abwärts, auf und ab), Strumming (Akkorde wie ein Gitarrenanschlag staffeln, Abstand in ms, Richtung), Euklidischer Rhythmus (Treffer gleichmäßig auf Schritte verteilen, ersetzt den Inhalt des Clips) und Oktaven dazu (jede Note darüber und/oder darunter verdoppeln, leiser). Spuren nummerieren gehört zu den Spur-Werkzeugen (Rechtsklick auf eine Spur, --@menu track). Sie erscheinen danach im Menü Skripte und im Rechtsklickmenü eines Clips unter Werkzeuge; sie wirken auf die gewählten Clips (mehrere mit Strg/Umschalt wählen).
Kopfzeilen eines Skripts
| Zeile | Bedeutung |
|---|---|
--@name Anzeigename | Name im Menü (sonst der Dateiname) |
--@menu clip | zusätzlich im Rechtsklickmenü eines Clips unter Werkzeuge |
--@menu track | zusätzlich im Rechtsklickmenü einer Spur unter Werkzeuge; das Skript liest die gewählten Spuren mit daw.selection().tracks (die angeklickte Spur gehört dazu) |
--@param schlüssel|Beschriftung|Vorgabe|min|max | Parameter mit Schieberegler im Dialog (höchstens 12); im Skript als params.schlüssel lesbar. Ganze Zahlen, wenn Vorgabe, min und max ganz sind |
Die Kopfzeilen stehen in den ersten 40 Zeilen; fehlerhafte Zeilen werden übersprungen. Hat ein Skript Parameter, öffnet sich vor dem Lauf der Dialog (Enter = Ausführen, Esc = Abbrechen).
Zusätzliche Aufrufe
| Aufruf | Wirkung |
|---|---|
daw.selection() | Tabelle {clips = {…}, tracks = {…}} mit den Nummern der gewählten Clips und Spuren |
params.name | Wert eines Parameters aus dem Dialog |
daw.notes(clip) | Noten eines MIDI-Clips als Liste von {start, stop, key, vel, ch} (Samples der MIDI-Datei, Tonhöhe 0–127, Anschlag 1–127, Kanal 0–15); nil, wenn der Clip kein MIDI enthält. Das Feld heißt stop, weil end in Lua ein Schlüsselwort ist |
daw.set_notes(clip, liste) | Ersetzt alle Noten des Clips (leere Liste löscht sie). Controller und andere MIDI-Nachrichten bleiben erhalten. Prüft Zeiten und Wertebereiche, höchstens 200 000 Noten |
daw.beat_len() | Länge eines Schlags in Samples beim aktuellen Tempo |
--@name Oktave runter
--@menu clip
--@param okt|Oktaven|1|1|3
for _, id in ipairs(daw.selection().clips) do
local notes = daw.notes(id)
if notes then
for _, n in ipairs(notes) do n.key = math.max(0, n.key - 12 * params.okt) end
daw.set_notes(id, notes)
end
end
src_offset (siehe daw.clips). Das Skript sieht keine Plugin-Parameter und keine Automation; Zugriff auf Dateien und Netz gibt es weiterhin nicht.KI-Werkzeug: Skripte von der KI schreiben lassen
Mit KI → KI-Werkzeug (Skript) … (oder im Rechtsklickmenü eines Clips unter Werkzeuge → KI-Werkzeug …) beschreibst du in Worten, was ein Werkzeug tun soll, zum Beispiel „Strumming: Akkorde von unten nach oben anschlagen, 25 ms Versatz pro Ton, einstellbar“. Die KI schreibt daraus ein Lua-Skript mit Kopfzeilen und Reglern. Du brauchst dafür einen API-Schlüssel (KI → KI-Dienste, wie bei der KI-MIDI-Idee).
- Probelauf: Der Code wird sofort auf einer Kopie des Songs mit deiner aktuellen Auswahl ausprobiert. Scheitert er, geht die Fehlermeldung einmal an die KI zurück (automatische Korrektur). Bleibt es fehlerhaft, steht eine Warnung im Fenster.
- Prüfen: Der erzeugte Code steht im Fenster und ist bearbeitbar.
- Speichern legt ihn im Skriptordner des Songs ab (nie überschreibend: bei gleichem Namen wird gezählt); Speichern und ausführen startet ihn gleich, mit dem Parameterdialog. Danach erscheint er im Menü Skripte und im Clipmenü. Ein Lauf ist ein Rückgängig-Schritt.
rdaw-cli – die Kommandozeile
rdaw-cli.exe liegt neben rdaw-app.exe und arbeitet ohne Oberfläche an Projektordnern: zum Prüfen, für Stapelarbeit, für Tests und zum Retten beschädigter Projekte. rdaw-cli --version zeigt die Version. Der Projektordner ist der Songordner (mit der .rdaw-Datei). Positionen und Längen sind in Samples bei 44,1 kHz (44100 = 1 Sekunde). Fehler stehen auf der Fehlerausgabe, der Rückgabewert ist dann 2.
Projekt anlegen und ansehen
| Befehl | Wirkung |
|---|---|
new <Ordner> | Neues Projekt (Songordner mit .rdaw und media/) |
info <Ordner> | Spuren und Clips auflisten (Start, Länge, Quellversatz, Medium) |
salvage <Ordner> <neuer Ordner> | Aus einem beschädigten Projekt retten, was lesbar ist, in einen neuen Ordner |
Spuren, Clips und Medien
| Befehl | Wirkung |
|---|---|
track <Ordner> <Name> | Audiospur anlegen |
import <Ordner> <Spur> <datei> [start] | WAV oder MIDI als Clip auf die Spur legen (Medium kommt nach media/wav bzw. media/midi) |
split <Ordner> <Clip> <Position> | Clip bei Position teilen, meldet den hinteren Teil |
move <Ordner> <Clip> <Start> [Spur] | Clip verschieben (optional auf eine andere Spur) |
lane <Ordner> <Clip> <Take-Spur> | Clip in eine Take-Unterspur legen (0 = Comp) |
comp <Ordner> <Spur> <Take-Spur> <Start> <Ende> [Überblendung] | Bereich eines Takes in die Comp-Spur übernehmen |
insert <Ordner> <Spur> <pfad.vst3> [ara] | Plugin ans Ende der Kette der Spur, mit ara im ARA-Modus |
Mixer, Weiterleitung, Tempo und globale Spuren
| Befehl | Wirkung |
|---|---|
bus <Ordner> group|fx <Name> | Gruppen- bzw. Effektspur anlegen |
route <Ordner> <Spur> <Ausgang|master> | Ausgang einer Spur auf eine Gruppe oder den Master |
send <Ordner> <Spur> <Ziel> <dB> [pre] | Send hinzufügen (Pegel in dB, pre = vor dem Fader) |
autopt <Ordner> <Spur> volume|pan|send:<Zielspur> <Samples:Wert> … | Automationskurve setzen |
tempopt <Ordner> <Position> <BPM> | Tempoänderung in der Tempokarte (ohne Mitnehmen der Clips – das macht nur die App) |
ramp <Ordner> <Position> step|ramp|curve | Übergang ab einem Tempopunkt (0 = Starttempo) |
meterpt <Ordner> <Position> <Zähler> <Nenner> | Taktartänderung |
ann <Ordner> chord|section|text <Position> <Länge> <Text> | Anmerkung für die globalen Spuren Akkorde, Abschnitt oder Text |
Rechnen und Exportieren
| Befehl | Wirkung |
|---|---|
render <Ordner> <aus.wav> | Offline-Mixdown (24 Bit) über den echten Mixer: Weiterleitung, Sends, Balance, Automation, Master. Ohne Plugins und MIDI-Instrumente |
dawproject <Ordner> <aus.dawproject> | Export als DAWproject (nur lesend): Spuren, Clips, Noten, Pegel, Marker; ohne Plugins und Automation. Meldet, was nicht übernommen wurde |
dawproject-import <datei> <neuer Ordner> | DAWproject-Datei (Bitwig, Studio One, Cubase …) als neuen Song anlegen: Spuren, Pegel, Clips, Noten, Marker; Audio in der Kommandozeile nur als WAV (die App wandelt auch FLAC, MP3, OGG) |
mix <aus.wav> <ein.wav>[@start] … | WAV-Dateien ohne Projekt auf einer Zeitleiste mischen (je Datei eine Spur) |
Geräte und Plugins (nur Windows)
| Befehl | Wirkung |
|---|---|
scan <VST3-Ordner> [Sekunden] | VST3-Module einzeln in Fremdprozessen prüfen (ein Absturz trifft nur den Prüfprozess); Zeitgrenze je Plugin |
play <Ordner> <Treiber-Teil> [Frames] [dB] | Projekt über ASIO abspielen, meldet Unterläufe; optional Puffergröße und Dämpfung |
record <Ordner> <Spur> <Treiber-Teil> <Eingangskanal> <Sekunden> [Start] [Frames] | Aufnahme (24 Bit BWF) als Clip ablegen |
live <Ordner> <Treiber> [Frames] [dB] | Test: spielt eine Schleife, bearbeitet dabei das Projekt und meldet Aussetzer |
midi-list | MIDI-Eingänge auflisten |
midi-rec …, midi-gen <aus.mid> [Grundton] | MIDI aufnehmen bzw. eine Testmelodie (C-Dur-Tonleiter) schreiben |
mcu-test <Gerätename> [Sekunden] | Gerätetest für einen Mackie-Control-Controller (Faderfahrt, LED, Anzeige, danach Eingaben ausgeben) |
Beispiele
rdaw-cli new C:\Songs\Test
rdaw-cli track C:\Songs\Test Gitarre
rdaw-cli import C:\Songs\Test 1 gitarre.wav 0
rdaw-cli render C:\Songs\Test mix.wav
rdaw-cli dawproject C:\Songs\Test test.dawproject
rdaw-cli salvage C:\Songs\Kaputt C:\Songs\Gerettet
