rockindawHandbuch 0.1.0-beta.1

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.

SicherheitDie Skriptsprache ist Luau in einer Sandbox: kein Datei-, Netz- oder Prozesszugriff (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.…)

AufrufWirkung
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_soloMixer-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

ZeileBedeutung
--@name AnzeigenameName im Menü (sonst der Dateiname)
--@menu clipzusätzlich im Rechtsklickmenü eines Clips unter Werkzeuge
--@menu trackzusä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|maxParameter 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

AufrufWirkung
daw.selection()Tabelle {clips = {…}, tracks = {…}} mit den Nummern der gewählten Clips und Spuren
params.nameWert 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
GrenzenNoten liegen in der Zeit der MIDI-Datei, nicht der Zeitleiste: ein Clip zeigt den Ausschnitt ab 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).

  1. 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.
  2. Prüfen: Der erzeugte Code steht im Fenster und ist bearbeitbar.
  3. 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.
Datenschutz und SicherheitGesendet werden nur dein Wunschtext, Tempo, Taktart, die Zahl der gewählten Clips und die API-Beschreibung – keine Noten, Spurnamen, Audio- oder Projektdateien. Der erzeugte Code läuft nur in der Skript-Sandbox: kein Datei-, Netz- oder Prozesszugriff, 5 Sekunden, 64 MB. Er wird nie ohne deinen Klick ausgeführt. Wie bei jeder KI-Antwort gilt: Prüfe das Ergebnis und höre es dir an.

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.

HinweisBefehle, die das Projekt ändern, schreiben direkt in die Projektdatei und lassen sich in der App mit Strg+Z nicht zurücknehmen, wenn die App dabei geschlossen war. Für Versuche eine Kopie benutzen (Datei → Speichern unter).

Projekt anlegen und ansehen

BefehlWirkung
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

BefehlWirkung
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

BefehlWirkung
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

BefehlWirkung
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)

BefehlWirkung
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-listMIDI-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