Gibt es eine Dokumentation der Ultraschall-spezifischen OSC-Kommandos?

Liebe Ultraschall-Community, ich bin gerade dabei ein neues Streamdeck-Plugin für Ultraschall auf Basis von OSC zu entwickeln, da der Rückkanal bei OSC insbesondere für das Soundboard mehr Möglichkeiten bietet, als die Reaper-HTTP-Schnittstelle, die vom aktuellen Plugin genutzt wird.

Dazu nun eine Frage: Existiert eine Liste der Ultraschall-spezfischen OSC-Commands? Die vom Soundboard kenne ich (siehe hier), aber für Ultraschall selbst konnte ich nichts finden. Allerdings weiß ich aus einigen Vorlagen für TouchOSC, dass Kommandos wie /action/_Ultraschall_Set_Marker x existieren.

Ich freue mich über einen Link – kann auch gerne auf eine Code-Datei auf GitHub sein.

Hallo,
das ist eine nette Idee. Ich kenne leider auch keine Liste; ich habe allerdings drei Fragen:
a) Warum OSC und nicht Midi
b) Was ist an einer Lösung mit BitFocus nicht ausreichend?
c) Hast Du schon mal @fernsehmuell kontaktiert, welche Pläne er mit dem Plugin hat?

Grüße

Gero

Hallo @Gero, vorab ich habe ein paar Anforderungen zusätzlich zu den Standards (Transport, Mute), die ich mit den bestehenden Lösungen nicht umgesetzt bekomme. Wenn ich einen Podcast aufzeichne, habe ich meistens meine Notizen im Vordergrund und sehe das Ultraschall-Fenster nicht. Daher möchte ich folgende Features haben:

  1. Laufende Aufnahmezeit auf dem Streamdeck (gibt mir die Sicherheit, dass die Aufnahme wirklich noch läuft)
  2. Fortschrittsanzeige für abgespielte Soundboard-Clips

Alles nicht überlebensnotwendig, aber ich hatte vor ein paar Jahren schon mal eine kleine Leiste als Chrome-App entwickelt, die immer im Vordergrund war und diese Features geboten hat und das möchte ich mit dem Streamdeck jetzt wieder umsetzen.

zu a) Erstmal ganz pragmatisch: Mit OSC kenne ich mich aus, mit MIDI nicht :slight_smile: Aber es gibt auch noch handfestere Gründe:

  • OSC ist das moderne Protokoll, das von Anfang an auf Basis von TCP aufgebaut wurde.
  • Nachrichten sind extrem einfach aufgebaut und in Reaper ist nahezu jede Aktion ohne Konfiguration per OSC aufrufbar. Insbesondere das Ultraschall Soundboard bietet ein OSC-Interface – ich weiß gar nicht, ob eine Steuerung per MIDI hier möglich ist.
  • Hinzu kommt, dass Reaper auch reichhaltige Informationen per OSC versendet, wie etwa den aktuellen Timecode, VU-Levels der einzelnen Tracks und beim Ultraschall-Soundboard etwa, wie viel Zeit für den gerade noch spielenden Clip verbleibt. Keine Ahnung, ob das auch für Midi geht. Das schafft reichhaltige Anzeigemöglichkeiten am Streamdeck.

zu b) Ich nutze im Alltag die offizielle App von Streamdeck. Würde ich BitFocus nutzen, hätte ich hier einen Bruch. Außerdem bietet BitFocus mit den existierenden Plugins nicht den besagten Rückkanal, beziehungsweise nur für ausgewählte Funktionen. Eine Anzeige der Aufnahmezeig am Streamdeck oder der verbleibenden Dauer eines Soundboard-Clips wäre damit also ebenfalls nur durch Implementierung eines eigenen Plugins möglich. Das mache ich dann lieber direkt für Streamdeck, da das für mich und andere Nutzer einfacher anzuwenden ist, als wenn man erst BitFocus Companion installieren und einrichten muss.

zu c) Als ich mit der Entwicklung anfing, hatte @fernsehmuell noch nicht auf die Inkompatibilität des existierenden Plugins mit der aktuellen Streamdeck-Software reagiert – wie ich gerade gesehen habe, hat er gestern geantwortet (Thread).

Dennoch bleibt hier die Einschränkung, dass das Plugin die schlecht dokumentierte Reaper-HTTP-Schnittstelle nutzt, die – meines Wissens nach – etwa keine Abfrag des Fortschritts eines Soundboard-Clips ermöglicht. Und so wie das Plugin technisch umgesetzt ist, ist hier auch leider keine OSC-Kommunikation im Nachhinein integrierbar.

Gruß

Sven

1 „Gefällt mir“

Hmm, wäre es nicht trotzdem sinnvoll, die OSC-Schnittstelle so zu bauen und zu dokumentieren, dass es auch für uns als Ultraschall Team nutzbar wäre? Wenn es mächtiger ist als die derzeitige Schnittstelle könnten da noch mehr davon profitieren.

Von Ultraschall-spezifischen OSC-Kommandos weiß ich nichts, ausser halt das Soundboard.

Das Soundboard ist auch per Midi kontrollierbar, dazu muß aber die Soundboard Spur scharf gestellt sein und als Input Kanal Midi eingestellt.
Dafür gibts auch ne Menge Actions, die so das Soundboard steuern(auf dem Nummernblock belegt).

1 „Gefällt mir“

Hallo,
vielen Dank für die ausführliche Antwort. Ich verstehe jetzt Deinen Ansatz. Danke dafür!

Mir gefällt @Mespotine s Ansatz die Schnittstelle für viele nutzbar zu machen.

Vielleicht könntet Ihr * euch mal verabreden, um abzuklären ob sich mit relativ kleinem Aufwand was machen lässt.

Grüße

Gero

Ihr = @eiselch , @Mespotine , @fernsehmuell und @heikopanjas

Ich stehe gerade auf dem Schlauch: Was meinst Du mit „die OSC-Schnittstelle so zu bauen und zu dokumentieren, dass es auch für uns als Ultraschall Team nutzbar wäre“. Meinst Du damit das Streamdeck-Plugin, dass ich in Arbeit habe? Das konsumiert nur eine existierende OSC-Schnittstelle und schafft da nichts neues. Und natürlich wird das OpenSource und soll für alle Nutzer verfügbar sein.

1 „Gefällt mir“

Hallo,
mir ist gerade noch etwas eingefallen….

Kannst Du Dir die OSC Signale nicht einfach mit einem OSC monitoring Tool wie “Protokol” anzeigen lassen?

Ich bin mir aber sicher, dass Du sowas schon versucht hast…

Grüße

Gero

PS:
Vielleicht hilft das Tool hier : Midi in, OSC out with Midi thru. auch weiter…

Genau was Du in Arbeit hast. Das wir vielleicht dann weiter entwickeln für allgemeine Nutzung.

1 „Gefällt mir“

Danke @Gero, prinzipiell habe ich schon eine Quelle in dem TouchOSC-Template von @Feivel hier – da bin ich auf /action/_Ultraschall_Set_Marker x gestoßen, um Kapitelmarken zu setzen. Ich hatte nur die Hoffnung, dass es irgendwo eine Liste gibt. Ich frage mal @Feivel.

2 „Gefällt mir“

Hallo,
ich glaube Deine Frage ist einfacher als gedacht. Ultraschall benutzt LUA Scrips.
Der von Dir verwendete Ausdruck:

_Ultraschall_Set_Marker

Ruft das entsprechenede LUA Script auf:

Nun zu Deiner Frage. Die Namen aller LUA Scripte und damit der Ultraschall „Befehle“ lassen sich ganz einfach in Ultraschall anzeigen. Rufe einfach das Menü

Actions => Show Action List

auf.

Dann siehst Du unter Command ID alle LUA Scripte und auch das

_Ultraschall_Set_Marker

Script

Wenn Du auf RUN drückst wird eine Kapitelmarke angelegt.

Genau dieses Script ruft OSC auch auf.

Ich hoffe das war das was Du gesucht hast. Ich habe am Anfang zuviel um die Ecke gedacht, Sorry.

Grüße

Gero

2 „Gefällt mir“

Top @Gero, das war tatsächlich genau das, was ich gesucht habe! Und dabei habe ich auch gleich gelernt, dass ich per OSC jede Reaper-Aktion unter der Adresse /action/<Command ID> ausführen kann. Vielen Dank!

2 „Gefällt mir“

Hallo Sven,
es freut mich, dass meine Antwort Dir geholfen hat.

Ich habe noch eine Anregung:
Wenn Du einen Shortcut verwendest, kannst Du Dir Befehle direkt auf das Streamdeck legen ( OSC Feedback fehlt dann.) Da es sehr viele Reaper User gibt, ist die Zahl der Erklärvideos größer. Es funktioniert aber alles genauso für Ultraschall.

Wenn Du Bitfocus als Plugin in die Streamdeck integriest:

Ist es noch einfacher:

zu konfigurieren.

Ich wollte nur nochmal die bereits bestehenden Optionen aufzeigen, bevor Du loslegst…

Grüße

Gero

Wie unten schon von @Gero gesagt: Habe mir alle Commands aus der Action List zusammengeklaubt :slight_smile:

Wenn ich mich richtig erinnere habe ich für 1-2 custom actions sogar im entsprechenden Feld einfach selbst einen OSC „Namen“ eingetragen.

Das hier macht mich neugierig! Hast du eventuell eine Idee, wie man aus dem „rohen“ Timecode signal ein formatiertes HH:MM:SS:SS Format bekommt?? Da habe ich seit Jahren keine Lösung für!

Hallo,
Ich finde die Idee auch recht nett die Laufzeit auf dem Streamdeck anzuzeigen.

Ich kenne aber nur HH:MM:SS:FF. Für Video wobei FF der Frame ist. HH:MM:SS:SS kenne ich jedoch nicht. Seht das zweite SS für Millisekunden?

Wenn ich mich nicht irre berechnet sich die Zeit in Sekunden wie folgt: Timecode/ Samplerate = Sekunden
Sekunden in HH:MM:SS umzurechnen sollte nicht sooo schwer sein.
(Da gibt es bestimmt was von Python :wink: )

@eiselch hat aber anscheinend eine Idee wie das gehen könnnte… Jetzt bin ich auch ganz neugierig.

Grüße

Gero

dachte dass der letzte Counter bei Ton tatsächlich samples sind, aber du hast Recht. Sind Millisekunden

Reaper liefert via OSC zwei Time-Codes: einmal den „rohen“ unter der Adresse /time und einmal einen bereits formatierten unter der Adresse /time/str. Somit ist hier eigentlich keine eigene Formatierung erforderlich. Ansonsten lässt die sich natürlich leicht aus dem rohen Wert berechnen.

Hier ein Ausschnitt der OSC-Messages, die ich erhalte, wenn beispielsweise die Wiedergabe läuft:

{ address: '/time', args: [ 10.392437934875488 ] }
{ address: '/time/str', args: [ '0:10.392' ] }
{ address: '/beat/str', args: [ '5.1.78' ] }
{ address: '/samples', args: [ 498837 ] }
{ address: '/samples/str', args: [ '498837' ] }
{ address: '/frames/str', args: [ '00:00:10:11' ] }
{ address: '/time', args: [ 10.48843765258789 ] }
{ address: '/time/str', args: [ '0:10.488' ] }
{ address: '/beat/str', args: [ '5.1.98' ] }
{ address: '/samples', args: [ 503445 ] }
{ address: '/samples/str', args: [ '503445' ] }
{ address: '/frames/str', args: [ '00:00:10:14' ] }
{ address: '/time', args: [ 10.584437370300293 ] }
{ address: '/time/str', args: [ '0:10.584' ] }
{ address: '/beat/str', args: [ '5.2.17' ] }
{ address: '/samples', args: [ 508053 ] }
{ address: '/samples/str', args: [ '508053' ] }
{ address: '/frames/str', args: [ '00:00:10:17' ] }
2 „Gefällt mir“

Man kann wohl auch eigene OSC-Messages erstellen und senden lassen. Das hatte ich mir aber, mangels OSC-Gerät, nie angeschaut.

Aber im Ressourcenverzeichnis von Reaper gibts nen Ordner namens OSC/ mit den Files

Default.ReaperOSC
LogicPad.ReaperOSC
LogicTouch.ReaperOSC

die das beispielhaft machen. Aber wie gesagt, hab ich mir nie angeschaut bisher…

1 „Gefällt mir“

Wahnsinn!!! Das ist ja lächerlich einfach! Vielen vielen Dank, ist direkt eingebaut :slight_smile:

2 „Gefällt mir“

/frames/str

Bildschirm­foto 2023-03-14 um 13.10.00

Und damit ist für mich ebenfalls zum ersten Mal überhaupt die Frage nach einer vernünftigen TC-Anzeige auf dem iPad geklärt :slightly_smiling_face:

Vielen Dank dafür.
Endlich eine saubere Anzeige von Stunden:Minuten:Sekunden
ohne Frames u.o. Millisekunden.

Ein Tipp:
Wenn man im Touch OSC Editor den Rahmen des Timecodelabels verschmälert, fällt irgendwann der letzte unschöne Doppelpunkt am Ende weg, hinter dem man vermutlich doch noch MS oder Frames anzeigt bekommt.
Also einfach mit der Breite ein klein wenig experimentieren. Ist der Rahmen allerdings zu schmal, ist die Sekundenanzeige nur einstellig…

EDIT:
Gerade fiel mir auf, dass es hierfür doch bereits im Dezember 22 eine Lösung gab, auf die ich sogar reagiert hatte.
Vielleicht bin ich mit all den bisherigen Touch OSC Layouts irgendwie durcheinandergekommen :slightly_smiling_face:

Ich nutze hier ein ausrangiertes iPhone für ein 8-Tasten-Soundboard sowie ein iPad für Trackmonitoring, Start, Stopp sowie Kapitel- bzw. Editmarker.

Aus irgendeinem Grund (das Problem habe ich vor längerer Zeit bereits einmal beschrieben) funktioniert das jedoch nie permanent.
Aktuell habe ich hier wieder das Problem, dass die Anzeigen auf iPad und iPhone nur quasi „mitlaufen“, also optisches Feedback geben, jedoch selbst keine Eingaben erlauben.

Wenn es dafür jemals eine wirklich robuste Lösung gäbe, würde ich das sehr begrüßen.

1 „Gefällt mir“

Auch wenn das vermutlich der falsche Platz ist, aber ich habe gestern hier eine Behauptung aufgestellt, die ich korrigieren muss.

Die Behauptung war, dass die Steuerung via OSC (zumindest bei mir) nicht stabil wäre.
Ganz offenbar war ich jedoch selbst für das fehlerhafte Verhalten verantwortlich.
Ich habe heute wieder viel herum experimentiert und tauschte schließlich auf meinen iOS Geräten unter Connections - OSC - Host den Namen meines Rechners gegen dessen IP-Adresse aus. Und sofort funktionierte die Steuerung wieder, auf beiden Geräten parallel…

2 „Gefällt mir“