[GELÖST] Auto-(Re)Export Track(s) via einmalig zugewiesenen Export-Presets

Schnitt-Arbeit in Reaper/Ultraschall hat viel Fluptiztät, nur das Exportieren nervt mich jedes mal.

Ich wünschte ich könnte die Export-Optionen einmal pro Projekt und pro Spur(en) festlegen und dann mit einem Klick auf einen Button, alles exportieren.

Ein Beispiel Setup: Ich würde gern diese Zuweisungen machen (siehe Bild):

  • Spur „Simon“ und „Pascal“ einem Export-Template zuweisen mit den Optionen
    – Source: Selected Tracks
    – File name: $project-$tracks

  • …Spur Foreground, Intro & Chapter Sounds einem anderen Export-Template zuweisen:
    – Source: Entire Project
    – File name: $project-foreground

  • …Spur Background, Einspieler Musik einem anderen Export-Template zuweisen:
    – Source: Entire Project
    – File name: $project-background

image

Jedes mal, wenn ich nun den Export-Button drücke, werden mir (in diesem Fall 4) die FLACs exportiert ohne, das nochmal ein Menü aufploppt (außer das Render-Menü mit der Progressbar). Am Ende hätte ich dann in diesem Fall project-simon.flack, project-pascal.flac, project-foreground.flac und project-background.flac.

Aktuell muss ich leider pro Export 3x manuell die richtigen Spuren selektieren/muten, das Export-Template manuell auswählen und dann „Render“ drücken.

Sowas ist in nem UI-Workflow nicht abbildbar, zumindest nicht, wenn es noch bedienbar bleiben soll.
Aber, Du kannst Dir das programmieren, mithilfe der in Ultraschall mitgelieferten Ultraschall-Api. Da hab ich das Rendern verprogrammierbar gemacht.
Damit wären alle Deine Wünsche umsetzbar, wenn Du innerhalb eines Projekts die Spuren mit unterschiedlichen Presets rendern willst.

Lua lernen vorausgesetzt.

1 „Gefällt mir“

Just in case, hier is die Doku dazu:

https://mespotin.uber.space/Ultraschall/US_Api_Introduction_and_Concepts.html#Rendering_001_Introduction

1 „Gefällt mir“

Vielen Dank für den Tipp, ich schau es mir gerade an :slight_smile:

image

2 „Gefällt mir“

EDIT: Ich glaube * SetProject_RenderStems* ist was ich suche… versuche es damit.

Ich habe nun mal ein kleines Script geschrieben und hänge beim Export. Ich habe eine Function die mir meine Tracks anhand eines keywords („Speaker“, „FG“ oder „BG“) selektiert und nun müsste ich irgendwie definieren können, dass ich diese selektierten Tracks entweder via [Source: Selected Tracks & $project-$tracks] oder [Source: Entire Project & $project-Foreground/Background] exportieren will.

Ich kann dazu aber nichts in der Dokumentation finden. Dort kann ich nur via ```
CreateRenderCFG_FLAC die Bitrate definieren und dann später via ultraschall.RenderProject noch den Pfad festlegen. Ich sehe aber keine Möglichkeit detailiertere Optionen einzustellen.

dofile(reaper.GetResourcePath().."/UserPlugins/ultraschall_api.lua")

function selectTracksByKeyword(_keyword)
  local nbTracks = reaper.CountTracks();
  for i=0,nbTracks-1 do
    -- get track infos and check if the name contains the keyword
    local track = reaper.GetTrack(0, i);
    local ok, trackName = reaper.GetTrackName(track, "")
    local s, e = string.find(trackName, _keyword)
    
    -- de/select the corresponding tracks
    if s ~= nil then
      print("select " .. trackName)
      reaper.SetTrackSelected(track, true)
    else
      reaper.SetTrackSelected(track, false)
    end
  end 
end

local dir = reaper.GetProjectPath("")
dir = string.gsub(dir, "Recordings", "") -- remove "Recordings" from the path
local proj_full_name = reaper.GetProjectName( 0, "" )

print(str)
print(dir)
print(proj_full_name)

-- begin exporting everything
reaper.CSurf_OnPlayRateChange(1.0)

-- set render settings
render_cfg_string = ultraschall.CreateRenderCFG_FLAC(0, 5)
overWriteWithoutAsking = false
renderCloseWhenDone = true
fileNameIncrease = false

-- render Foreground Tracks
selectTracksByKeyword("FG")
--retval, rendered_files_count, rendered_files_MediaItemStateChunk, rendered_files_array = ultraschall.RenderProject(nil, "d:\\exportfile.flac", 0, 15, overWriteWithoutAsking, renderCloseWhenDone, fileNameIncrease, render_cfg_string, nil)
--print("rendered " .. rendered_files_count .. " file(s)")

-- render Background Tracks
selectTracksByKeyword("BG")

-- render Speaker Tracks
selectTracksByKeyword("Speaker")

Lies dafür am Besten alle Kapitel des von mir verlinkten Links durch. Speziell der Teil zu RenderTables, die dazu da sind, sämtliche Render-Features abzubilden.
Dort „stellst“ Du die Optionen ein und übergibst die RenderTable dann an RenderProject_RenderTable.

Kurzerklärung: Rendertables sind die zentrale Datenstruktur fürs Rendern. Du kannst ne RenderTable neu erstellen lassen, oder eine mit den Settings einer Projektdatei, oder mit den Settings eines Presets, usw.
Die einmal erstellen, anpassen, an die Render-Funktion übergeben und es sollte rendern.

Wichtig: Nie ne RenderTable „per Hand“ erstellen, immer die passenden Funktionen der Ultraschall-API nutzen. Dann bleiben Deine Skripte auch in zukünftigen Versionen von Ultraschall lauffähig, ohne daran rumschrauben zu müssen.

CreateNewRenderTable ist da eine der wichtigsten Funktionen für.

1 „Gefällt mir“

Vielen Dank! :heart: Es funktioniert nun!! :slight_smile: Falls das Script jemand braucht, hier ist es:
https://github.com/simonschreibt-code/reaper/blob/main/export.lua

Es sucht nach Spuren mit „FG“ im Namen und exportiert dieses als $project-foreground.flac, die mit „BG“ im Namen als $project-background.flac und alle mit „Speaker“ im Namen als einzelne Dateien à la $project-$track.flac.

3 „Gefällt mir“

Nice! Freut mich, dass es funktioniert :slightly_smiling_face:

1 „Gefällt mir“

Vielen Dank für die ganze Arbeit mit der API und der tollen Hilfe! :heart:

1 „Gefällt mir“