App starten mit LUA in Ultraschall

Hi ihr Guten,

man kann doch sicher via LUA beim Starten eines Templates eine App starten, oder?

Ich möchte gern eine App zu einem kleinen Spundinterface starten, wenn ich mein Reaper Template starte. Wie und wo geht das?

Es gibt den Befehl reaper.ExecProcess(deinbefehl,2000)
Die 2000 sind 2000ms. Solange wartet der Befehl auf eine Antwort.

Ich verstehe die Hälfte. Heißt “Mein Befehl” sowas wie “open Program.app” ? (Ich arbeite am Mac)

Ja das könnte gehen. Oder direkt die ausführbare datei im .app “Paket” (Ordner) suchen.

Wahrscheinlich das, was unter /Applications/<App>.app/Contents/MacOS/ liegt. Also z.B. /Applications/Podlive.app/Contents/MacOS/Podlive.

Hmm also wenn ich ein Script editieren will und den Inhalt in die Datei schreibe, passiert nix:
reaper.ExecProcess(open '/Applications/TAC-2 MixEfx.app/Contents/MacOS/TAC-2 MixEfxLaunchd',2000)

Versuch mal ohne open. Außerdem sieht der Name des Programms so aus, als ob das etwas ohne UI ist.

Hmm, geht trotzdem nicht. :confused: Hab es auch statt der Hochkommata mit einem Backslash beim Leerzeichen probiert, da startet nix, auch wenn ich das verzeichnis anpasse.
Eine UI hat es eig. Ich kann es ganz normal über den Application Folder öffnen.

Probier doch mal

reaper.ExecProcess("open '/Applications/TAC-2 MixEfx.app'", 2000)

ggf. macht das Leerzeichen auch Probleme – was du per Umbenenen/Symlink (ln -s in Terminal) umgehen könntest.

1 „Gefällt mir“

Sollte ExecProcess nicht klappen:
http://mespotine.de/Ultraschall/Reaper_API_Lua.html#ExecProcess

Sollte es auch mit
http://mespotine.de/Ultraschall/Reaper_API_Lua.html#BR_Win32_ShellExecute
gehn, die bevorzuge ich eher…

Darüber hinaus bietet Lua selbst auch noch die os.execute-funktion zum Ausführen von Programmen
http://lua-users.org/wiki/OsLibraryTutorial
Die hat aber den Nachteil, dass sie kurz nen Shell-Fenster aufpoppen lässt und Dir den Fokus von Reaper wegklaut. Das scheint aber in Deinem Falle nicht so wichtig zu sein.

PS: Versuch mal erstmal die App in der Kommandozeile aufzurufen umzu schaun, ob das klappt. Das dürfte am Anfang etwas leichter sein um zu schaun, ob das Problem an der App oder am Funktionsaufruf liegt.
Da die Funktionen ja auf Kommandozeile aufbauen könnte das helfen…

2 „Gefällt mir“

Hier mal die Fehlermeldung, die Reaper auswirft:
Apps starten.lua:1: attempt to perform arithmetic on a nil value (global 'open')

Das ist meine Codezeile:
reaper.ExecProcess(open /Applications/TAC-2-MixEfx.app, 2000)
(Habe die App umbenannt.) Führe ich den Befehl im Terminal via Bash aus, klappt’s.

Ich habe nun über Bande gespielt und in Lua das Ausführen eines Bash Einzeilers getriggert:
os.execute ("sh '/Users/[Username]/Library/Application Support/REAPER/Scripts/reaper_app_starten.sh'", 2000)

Im Bash Script steht einfach Folgendes drin:
#!/bin/bash
open /Applications/TAC-2-MixEfx.app

@fernsehmuell @Mespotine
Nun bleibt mir nur noch die Frage: Wie mache ich, dass wenn mein Template aufgerufen wird, dass dann automatisch die o.g. Action ausgeführt wird?

Guck dir das mal an:
https://forum.cockos.com/showpost.php?p=1573551&postcount=13

2 „Gefällt mir“

die Zeile “open /Applications/TAC-2-MixEfx.app” muß ein String sein, also in Anführungszeichen geschrieben werden. Sonst versucht Lua das zu berechnen…

Das ist in der Tat knifflig, weil Reaper noch kein automatisches Script für zu ladende Templates anbietet, mit dem man sowas angeben könnte (Im Gegensatz zum Start von Reaper, bei welchem man das Script __startup.lua automatisch ausführen kann, was Ultraschall ja auch macht).

Aber, je nachdem wie gut Du bist beim Hacken, ließe sich nen Hintergrund-Skript bauen, welches im Hintergrund schaut, ob wenn Du ein Template lädst. Das ist etwas fummelig, aber ginge an sich.
Wenn Du Dir das zutraust, kann ich Dich da etwas coachen…

Und Du müsstest eventuell beim Update auf neue Ultraschall-versionen was händisch nachhacken, wenn es immer automatisch funktionieren soll…

Edit: hab grad fernehmülls Link gesehn. Den Ansatz da find ich etwas unpraktisch, aber es brachte mich auf ne Idee. Es gäbe da ne einfach Möglichkeit nen Menüpunkt hinzuzufügen, der sowohl das Projekt-template lädt, als auch das Script ausführt. Wenn es bei Dir also darum geht den Appaufruf nur zu einem ganz bestimmten Template zu bauen, ließe sich da was Einfaches machen…

Edit2:
Schreib dazu in Deinem Script noch ne Zeile, die das Template lädt. Das sollte mit diesem Kommando gehen(hab das aber noch nie mit Templates versucht, nur mit normalen Projekten…):

http://mespotine.de/Ultraschall/Reaper_API_Lua.html#Main_openProject

Diese Zeile solltest Du vermutlich vorm Code für das Öffnen der App ausführen. Du musst dabei den kompletten Pfad zum Template mit angeben, da Reaper es sonst nicht finden wird.
Wenn das erfolgreich läuft, also das Template geöffnet wird und die App gestartet, kannste entweder das mit nem Tastaturshortcut verknüpfen, so dass das Ganze per Tastendruck ausgeführt wird, oder aber Dir noch im Menü-editor nen Punkt reinbasteln.
Für den Menüeditor findeste nen Button im Action-List-Fenster.

Achja, der Befehl Main_openProject lädt das Projekt in das aktuelle Projekttab, öffnet kein neues Tab! Ich hab noch nicht herausgefunden, wie man ein neues Tab dafür aufmacht, aber es gibt bestimmt eine Reaper-Action dafür, die man vorher ausführen kann…

Edit3:
Die Action “New project tab” mit der Action Command Nummer 40859 könnte da hilfreich sein…