StreamDeck Plugin um Reaper Actions via OSC zu triggern

Moin! Ich habe vor kurzem ein Video gesehen wo jemand Reaper/Ultraschall Actions via StreamDeck getriggert hat. Dazu wurde Bitfocus Companion als Middleware verwendet, da StreamDeck von sich aus kein OSC spricht.

Da man aber für Bitfocus Companion einen Account anlegen muss und das Tool auch jede Menge mehr Features hat als ich brauche, war ich nicht so sehr von der Lösung begeistert und habe ein eigenes kleines StreamDeck Plugin geschrieben, welches Stand Release 1.0, genau eine Funktion hat:

Ein Action in Reaper via OSC zu triggern.

Screenshot 2024-09-17 at 18.55.34

Wie hier zu sehen, hat jede Action in Reaper eine Command ID. Wenn ihr diese nicht in der Actionlist sehr, dann Rechtsklick auf die Header und Command ID auswählen.

Der Clou ist, dass das auch für User Generated Actions, die so gut wie Alles kontrollieren können. Von Reaper Features, zu Plugins etc. pp.

Auch die User Generated Actions bekommen so eine Command ID. Das Plugin welches ich „Reaper OSC Action“ getauft habe, sendet also beliebige Command IDs via OSC an Reaper/Ultraschall. An Localhost, LAN oder Broadcast oder Multicast Adressen (letztere habe ich noch nicht getestet).

Der Vorteil ist: Reaper muss nicht im Vordergrund laufen. Für mich zum Beispiel ist eine der Actions aus dem S&W Extension Pack: „Insert Marker at Play Cursor“. Aber auch andere Banale Dinge wie Transport Controls etc lassen sich damit steuern.

Das Plugin ist in Go geschrieben, ist cross compiled für Mac (universal binary) und Windows und verbraucht 2-4MB RAM.

Das sieht dann so aus:

Screenshot 2024-09-17 at 19.03.29

Es ist noch nicht im Marketplace da ich gerne wissen würde ob es auch auf anderer Leute Computer funktioniert deswegen kann man das StreamDeck Plugin auf Github runterladen. Nen kleines Demo Video gibts da auch im Repo Readme.

Repo: https://github.com/hukl/reaper_osc_action
Release: https://github.com/hukl/reaper_osc_action/releases/tag/v1.0.2

Würde mich also über ein kleines Feedback freuen ob es für Euch auch funktioniert.

Ich schließe nicht aus, später das Plugin etwas zu erweitern aber Simplicity stand jetzt erstmal im Vordergrund.

Danke für die Aufmerksamkeit und vielleicht ist es ja auch für die eine oder andere Ultraschall Userin nützlich :slight_smile:

4 „Gefällt mir“

Hmm, könnte das man auch mit Ultraschall ausliefern oder eher nicht?

Ich wüsste nicht was dagegen spricht? Ist MIT Lizenz also insofern schon mal möglich. Weiss aber nicht genau worauf sich die Frage bezieht, sollte es nicht die Lizenz sein :slight_smile:

Hallo,
@fernsehmuell hatte sein Plugin auch mitgeliefert. Jetzt gibt es das aber auch bei Streamdeck direkt zum runterladen. Die Frage ist ob man darauf hinweist und das Plugin verlinkt oder ob man es beilegt oder beides … wenn @hukl es soweit getestet hat, werden wir es im Manual mit einbauen… Wenn das OK ist.

Grüße

Gero

Ja, sowohl Lizenz als auch, wie stabil es derzeit schon ist, um es mit auszuliefern(müssten wir intern auch erstmal besprechen, ob es sinnvoll wäre).

Ansonsten, was Gero sagt.

Also ich habe es jetzt auf macOS und Windows getestet und soweit funktioniert es auf meinen Systemen einwandfrei. Ob es sinnvoll ist müsst ihr entscheiden - auch weil es ja schon Ultraschall StreamDeck Plugins gibt - ich weiss nur nicht ob die so ein Feature haben, beliebige Actions zu triggern. Wenn nicht - dann könnte das schon praktisch sein.

1 „Gefällt mir“

Schönes Ding! Gleich mal getestet…

Funktioniert soweit, auch wenn es (unter macOS 15) weder mit dem Symlink noch mit dem Release (was komischerweise eine andere Endung hat) sich installieren ließ. Musste den Ordner aus dem kompilierten Repo in den Plugin-Ordner kopieren.

Schön wäre noch, dass man statt einer IP-Adresse eine Domain eingeben könnte (zumindest ging bei mir domain.local nicht). Und die angezeigten Beispielwerte könnte man auch gleich als Default übernehmen (dann wäre wohl eher 8000 als Default-Port angemessen, weil das auch REAPER vorschlägt).

Das README sollte nur kurz erläutern, wie man das auf REAPER-Seite einrichtet (OSC-Gerät hinzufügen, Port auswählen etc.).

1 „Gefällt mir“

Ach echt? Auf macOS 15 hab ich es in der Tat noch nicht gestestet. Gut zu wissen - auch dass das .streamDeckPlugin da nicht geht. Das sollte einfach doppelklickbar sein.

Das mit der domain sollte an sich gehen, habe nur im StreamDeck Plugin ne validation auf IP Adresse drin was das verhindert. Teste ich mal.

Ich habe nen anderen Port als 8000 „vorgeschlagen“ weil zumindest bei mir auf dem Rechner gerne schon was Anderes auf Port 8000 lauscht :slight_smile:

Und README werde ich auch noch mal updaten.

Doppelklick hatte ich natürlich nicht getestet. Und das geht wiederum. Strange.

Ok gut - das ist ja schon mal beruhigend. Ich werde vermutlich morgen auch noch mal n Release nachschieben. Stellt sich raus, dass die StreamDeck Doku nicht aktuell ist und das Dev Team in deren Discord per Zuruf aktuelle Specs ausspricht und das in den docs erwähnte Packaging Tool schon EOL ist und es eigentlich schon ein Neueres gibt. Ich pinge dann Morgen nochmal bzgl. macOS 15 Test :slight_smile:

1 „Gefällt mir“

Sehr hübsch,

kann man via OSC mittlerweile auch Daten mitschicken? Deshalb habe ich beim „offiziellen“ Ultraschall Plugin das Webinterface von Reaper als Kommunikationskanal benutzt. Also kann ich z.B. einen RGB Wert rüberschicken, um die Markerfarbe anzugeben? Oder ist nur möglich zu sagen: mache X?

1 „Gefällt mir“

Also der stumpfe Weg wäre sich custom Actions für verschiedene Markerfarben anzulegen und diese Actions dann zu triggern. Was direkt via OSC zu triggern ist kannst du unter

~/Library/Application\ Support/REAPER/OSC/Default.ReaperOSC

nachschauen. So RGB Werte für Marker und so sehe ich da aber auf Anhieb nicht. Aber ggf. kann man da nen Custom Mapping machen.

Im Skript selbst kann man mit reaper.get_action_context() auch die OSC Message abfragen, mit der man das Skript gestartet hat.
Eventuell ließe sich das also bauen,indem man zusätzliche Parameter in der OSC-Message mitschickt.
Hab ich aber nicht getestet, daher weiß ich nicht, ob es auch wirklich so läuft.

Södele, neues Release in dem man nun auch Hostnames oder IP Adressen verwenden kann. Readme und Makefile wurden auch leicht erweitert. @timpritlove bitte gerne noch mal testen :slight_smile:

Bei mir im LAN hat’s mit mDNS hostnames, localhost und IPs funktioniert.

3 „Gefällt mir“

Funktioniert!

1 „Gefällt mir“

Das Plugin ist auch nun im Elgato Marketplace zu finden für eine entspannte Installation

7 „Gefällt mir“