Touch OSC GUI Plugin

  • Hallo.


    Bin neu hier im Forum und habe mich über die Feiertage mit TouchOSC beschäftigt.
    Habe für DMX 3.2.1 ein OSC Plugin auf Basis des MIDI Plugins erstellt (gleiche Funktionen mit RuleSets,...).

    Das Plugin legt beim Start einen OSC Input UDP Port an, an den die OSC Befehle gesendet werden müssen.

    Standardmäßig wird dabei Port 8000 verwendet. Ist dieser belegt, so wird 8001 verwendet, usw. bis ein freier Port gefunden wird. --> Dieser wird für die TouchOSC App veröffentlicht, sodass dieser in den Optionen unter "OSC" ausgewählt werden kann (Rechnername - DmxC3).

    Parallel dazu wird nach laufenden OSC Geräten gescannt und diese als "Output" Devices registriert.

    Grundsätzlich werden alle OSC Kommandos an alle registrierten Output Devices gesendet.

    Das bedeutet, das bei der Verwendung von mehreren OSC Geräten mit verschiedenen Layouts, darauf geachtet werden muss, dass die OSC Tags eindeutig über alle Geräte sind. Ansonsten werden die Werte auch von allen Geräten verarbeitet.

    ACHTUNG: Bei Verwendung der TouchOSC App auf einem IPAD ist mir aufgefallen, dass die Kommandos nur erkannt werden, wenn im OSC Tags nicht mehr als 2 Ebenen verwendet werden (z.B.: "/Page1/Fader1"


    Das ganze ist sich er noch nicht ganz ausgereift, daher bitte um Rückmeldung, wenn etwas nicht wie gewünscht funktioniert.


    Gutes neues Jahr euch allen und viel Spaß beim ausprobieren.

    Versionen und Changelog

    V1.0.0.7

    Touch Osc GUI Plugin_V1.0.0.7.zip


    Kompatibilität:

    DMXControl V3.2.3


    Änderungen:

    - Bugfix Lernmodus von Slider und XY Rule. Der Lernmodus konnte nicht manuell beendet werden.

    V1.0.0.6

    Touch Osc GUI Plugin_V1.0.0.6.zip


    Kompatibilität:

    DMXControl V3.2.3


    Änderungen


    - Kompatibilität DMXControl V3.2.3

    - Behebung Versionskonflikt DLL Abhängigkeit


    V1.0.0.5

    Touch Osc GUI Plugin_V1.0.0.5.zip

    Kompatibilität: DMXControl V3.2.2

    Änderungen

    - GUI für das Anlegen von Devices erweitert: Edit Funktion, Enter/Esc Unterstützung, F5/Del Unterstützung.

    - Darstellung im Input-Assignment überarbeitet. Dazu gibt es bei manchen Rules die folgenden 2 neuen Properties:

    -- IsMultiTouchItem: Kennung dass es sich in TouchOSC um eine Multi Komponente handelt. Bei TRUE werden Touched und Color nur beim 1. Eintrag für diese App Komponente angelegt.

    -- MultiItemName: Name für die Gruppierung im Input-Assignment. Wird nur verwendet, wenn IsMultiTouchItem=TRUE, ansonsten wie bisher der Rule Name.

    - Touched Input je TouchOSC Control hinzugefügt. Liefert TRUE, solange ein Control in der App berührt wird. Für MultiControls (Push, Toggle, Fader) gibt es aber nur 1 Input für die Gesamte Komponente und NICHT je einzelner Sub Komponente.

    - Color Ausgang je Komponente hinzugefügt. Wie bei Touched nur 1 mal je Hauptkomponente der App. Es werden die Farben

    "Red (1), Green (2), Blue (3), Yellow (4), Purple (5), Gray (6), Orange (7), Brown (8), Pink (9)"

    von der TouchOSC App unterstütz. Bei jeder anderen angelegten Farbe wird auf Default "Gray" geschaltet.
    Als Eingangswerte werden folgende Objekte Unterstützt:

    -- Color Objekt, z.B.: aus "HSV to Color" Converter

    -- Text mit dem Farbnamen, z.B.: "Red" (Groß-/Kleinschreibung wird ignoriert)

    -- Text mit RGB Farbwerten entweder mit ";" oder "," getrennt, z.B.: 255; 0; 0

    -- Zahlwert 1-9. Der Wert je Farbe ist oben in der Liste in () mit angegeben.

    - Alle Neuerungen werden im Projekt gespeichert, wieder geladen und auch beim Import entsprechend des Layouts gesetzt / upgedated.

    V1.0.0.4

    Touch Osc GUI Plugin_V1.0.0.4.zip

    Änderungen

    - Manuelles anlegen und löschen von Output Devices hinzugefügt.

    - Speichern und laden der manuell angelegten Output Devices im Projekt

    - Import von *.touchOSC Dateien unterstützt jetzt auch ein Update von bestehenden Regelsätzen.

    Die Regeln werden auf Basis der Namen (Control in TouchOSC und Regelname in DMSC) verglichen. Fehlende Regeln werden angelegt, bestehende angepasst und zu viel vorhandene Regeln gelöscht.

    - Bugfix Layout Parser (Manche Tags waren noch nicht optional)

    V1.0.0.3

    Touch Osc GUI Plugin_V1.0.0.3.zip

    Änderungen

    - Text Komponente unterstützt alle Datentypen die sich als Text ausgeben lassen (war vorher auf String eingeschränkt)

    - LED Komponente unterstützt auch Numerische Werte zwischen 0-1 (Leuchtkraft der LED). Bool wird direkt in 0 bzw. 1 übersetzt.

    - Um Regelsätze hinzuzufügen gibt es jetzt unter "Tools" eine Import Möglichkeit für "*.touchOSC" Dateien, die sämtliche Komponenten aus einem Layout importiert und auch die Tags übernimmt.
    ACHTUNG: Es ist (noch) kein Update möglich. Es wird ein komplett neuer Regelsatz angelegt.

    V1.0.0.2:

    Touch Osc GUI Plugin_V1.0.0.2.zip

    Änderungen

    - XY Komponente gibt nun die Werte zusätzlich als Positionswerte kombiniert aus.

    - Diverse Min/Max Grenzen im Code entfernt --> Es wird bei allen "Werte" Komponenten nun 1:1 der erhaltene Wert verwendet.

    - Für den Encoder müssen Min/Max Werte eingestellt werden.

    V1.0.0.1:

    Touch Osc GUI Plugin_V1.0.0.1.zip

    Änderungen

    - Reaktionszeit verbessert

    - BackTrack auch aus Optionen entfernt, da ohnehin nicht genutzt.

    - Endlosschleife durch erkennen des eigenen InputDevices behoben.

    V1.0.0.0

    Touch Osc GUI Plugin.zip

  • Hallo, einen schönen guten Abend!


    Dir erst einmal ein herzliches Hallo hier im Forum und alles Gute zum neuen Jahr.


    Vielen Dank für die erste Version deines Plugins! Ich habe mich heute mal dran gesetzt und ein bisschen damit herumprobiert. Ich finde es gut, dass du dich bei der Programmierung an dem orientiert hast, was bereits im MIDI-Plugin existiert. Die Bedienlogik mag zwar bestimmt ausbaufähig sein, aber so findet man schnell den Einstieg in dein Plugin. Bestimmt war es für dich aus Entwicklersicht auch etwas einfacher, dass du ein bestehendes Konzept aufgreifst.


    Was mir aber nun bei einem Test aufgefallen ist: alle Steuerelemente, die als Regler ausgeführt sind - sprich Fader, das XY-Pad oder die Encoder - erzeugen bei mir eine Signalschleife. Das sieht so aus, dass sich das XY-Pad von allein auf dem iPad bewegt, sobald ich es im Ruleset angelernt habe. Gleiches passiert mit dem Slider. Der Haken bei Backtrack ist dabei nicht gesetzt. Diese Steuerelemente muss ich dann auch ganz schnell wieder entfernen, weil mir sonst DMXControl 3 abschmiert. Zum XY-Pad wäre die Frage (so viel konnte ich noch sehen), ob du die beiden Eingänge nicht parallel direkt kombiniert anbietest, wo dann ein Positions-Wert übergeben wird. So macht es ja zum Beispiel auch Trackpad (Position) im Softdesk.


    Was aber gut funktioniert, sind die Buttons sowie das Label. Das mit dem manuellen Anlernen, gerade von letzterem klappt gut, sodass ich mir so zum Beispiel ohne Probleme den aktuelles BPM-Wert eines Speedmasters auf meinem iPad anzeigen lassen kann. Ebenfalls das Speichen und erneute Laden des Projekts nach einem Neustart von DMXControl 3.2.2 Beta klappte.


    Dies soll es für den Moment erst einmal von meiner Seite sein. Ich denke, ich werde mich in den nächsten Tagen noch ein bisschen weiter mit diesem Thema auseinander setzen, wo dann bestimmt das ein oder andere auffällt.


    Viele Grüße, Stefan.

  • Hallo Lightning Brothers.


    Herzlichen Dank für das schnelle und tolle Feedback.

    Ich habe mir die Themen gleich mal angesehen.

    - Signalschleife: Habe ich behoben und wurde dadurch verursacht, dass sich das Plugin selbst als "OCS Output Device" erkannt und registriert hat. In Verbindung mit den Laufzeiten zwischen Input und Output des Faders hat das dazu geführt, dass sich das Plugin selbst immer wieder abwechselnd die alten und neuen Werte gesendet hat, sobald der Fader einmal bewegt wurde.

    --> Das Plugin erkennt sich selbst und schließt sich aus den automatisch registrierten Output Devices aus. Es ist aber immer noch möglich auf dem gleichen Rechner (unter einem anderen Port) ein OSC Device zu betreiben.

    - Habe auch die Reaktionszeit selbst wesentlich verbessert. Es kommt aber beim schnellen verschieben eines Faders immer noch zu leichten Rucklern --> Das muss ich mir nochmal ansehen.

    - Kombiniertes XY Signal: Habe mir das angesehen, verstehe aber noch nicht ganz, wie der Softdesk hier die Informationen anbietet, da das Interface eigentlich zwingend einen double Wert erwartet. Eventuell kann mir hier einer der Stammprogrammierer weiterhelfen. Ich habe vorerst noch nicht hinbekommen.


    Habe den neuen Stand bei meinem ersten Beitrag hochgeladen und auch eine Versionierung eingeführt, damit man nicht so schnell durcheinanderkommt und beim ersten Beitrag auch immer den aktuellsten Stand findet.


    Danke nochmal für deine Unterstützung.

    mfg

    Thomas


    Nachtrag:

    Mittlerweile habe ich die Positions Möglichkeit entdeckt und integriert (V1.0.0.2)

  • Guten Abend Thomas,


    danke für die schnelle Überarbeitung und die Korrektur der Fehler. Ich habe mir die neue Version deines Plugins nun direkt wieder angesehen. In der Tat funktionieren die Fader und Rotary wie gewünscht. Es läuft alles schön stabil. Ebenfalls die Umsetzung mit dem XY-Pad gefällt mir gut. Wenn ich mir ein Connectionset baue, um damit den Programmer-Node anzusprechen und dann auf meinem iPad das "Steuerkreuz" bewege, reagiert das Position-Control und das Device Control in der GUI sehr flott und auch ohne Sprünge.


    Was nun im Gegensatz zur Version 1.0.0.0 nicht mehr funktioniert: ich kann das Label nicht mehr ansprechen und darüber einen Text zurück von DMXControl 3 auf das Tablet schicken.


    Vielleicht müssen wir hier eines nochmal ein bisschen auseinander klamüsern: DMXControl 3.2.x unterstützt mit dem neuen Input Assignment sehr wohl eine durchaus umfangreiche Feedback-Funktion. Das sieht man zum einen im Softdesk, dass ich hier ebenfalls die dortigen Label ansprechen und ihnen einen beliebigen Text mitgeben kann - egal ob den aktuellen BPM-Wert eines Speedmasters oder den Status einer Cuelist oder etwas ganz anderes, weil ich einfach nur eine Taste gedrückt habe. Ebenso kann ich beispielsweise die Farbe von verschiedenen Steuerelementen ändern und auch dem Slider, den ich zum Einstellen des Faderwerts eines Group Masters verwende, den aktuellen Wert des Group Masters zurückgeben - weil ich diesen auf die Schnelle mal im Master-Fenster geändert habe. Eine Schippe drauf legt das Steamdeck, wo mir DMXControl 3.2 sogar auch verschiedene Grafiken erzeugt, die dann auf den Tasten live angezeigt werden.


    Grundsätzlich liegt eine ähnliche Funktionalität auch im MIDI-Plugin (richtiger formuliert in der MIDI-Implementierung in DMXControl 3.2.x auf Basis des MIDI-Plugins) vor und es gibt auch Teile, wo das ein oder andere Feedback durchaus klappen mag. Dieser Teil ist aber im Gegensatz zum Softdesk und dem Steamdeck noch komplett ungetestet und steht deswegen auch nicht auf der offiziellen Featureliste. Der Knackpunkt ist im Bereich MIDI unter anderem das Stichwort Motorfader und farbig beleuchtete Tasten. Gerade letzte (also das Ausgeben von verschiedenen Farben) sind nur sehr umständlich einzurichten. Es existieren bereits ein paar Ideen, hier das Thema Einrichtung zu vereinfachen. Egal wie die Umsetzung am Ende aussehen wird: es wird darauf hinaus laufen, dass der MIDI-Bereich einmal komplett neu gebaut wird, so wie es das Input Assignment und das Softdesk für DMXControl 3.2.0 bereits erfahren hat.


    Im Fall von deinem OSC-Plugin sieht die Welt aber wieder etwas anders aus, nämlich wie beim Softdesk. Grundsätzlich spräche nichts dagegen, wenn eine Rückmeldung von Werten per OSC erfolgt und sicher würde das dann auch fleißig genutzt werden. Was du aber effektiv gesehen sicher stellen musst, dass keine Signalschleifen entstehen. Die Spalte "BackTrack" kannst du aus meiner Sicht auf weiterhin weg lassen. Ich sehe keinen Grund, Steuerelemente explizit auswählen zu müssen, damit man ihnen ein Wert zurückgeben kann. Da reicht es schlicht, getreu dem Motto: dein Plugin schickt erst Werte wieder zurück, wenn das entsprechende Steuerelement auf der Ausgangsseite auch in einem Connectionset verdrahtet wurde.


    Ich hoffe, du kannst meinen Ausführungen folgen und sie auch selbst mit DMXControl 3 nachvollziehen. Wenn aber noch Fragen aufkommen, zögere nicht und melde dich.


    Bis dahin, vielen Dank und viele Grüße!


    Stefan

  • Hallo Stefan


    Danke für deine Ausführlichen Informationen.

    Dein Problem mit der Text Komponente habe ich behoben.

    Das Thema Signalschleifen muss man immer im Hinterkopf haben. Habe dazu jetzt auch überall noch eine Prüfung integriert, dass die internen Ereignisse unterdrückt, wenn sich der Wert gar nicht geändert hat (bzw. auch schon das Wert übernehmen unterdrückt).

    Ob man per OSC auch Farben,... zur Laufzeit verändern kann, weiß ich leider noch nicht. Ich denke hier gibt es von TouchOSC noch einige Möglichkeiten. Habe z.B. beim schreiben des Layout Parsers auch gesehen, dass es unterschiedliche Einstellungen für die "Pages" für "Active" und "Inactive" gibt --> Eventuell lässt sich dieser Status von außen auch beeinflussen.

    Als nächstes möchte ich aber noch den Importer um ein "update" erweitern und die "Value Range" Einstellungen aus dem OSC Editor übernehmen, damit mal die bestehenden Funktionen ohne großes editieren (Beim Encoder wird es leider nicht anders gehen) direkt aus dem bereits im TouchOSC Editor erstellten Layout übernommen werden und korrekt funktionieren.


    Danke

    Thomas

  • Ok ich hab mal ein eigenes kleines Layout gebaut. Da funktioniert auch der Import. Ich konnte mich auch mit meinem Android Gerät mit DMXC über die IP Verbinden.


    Allerdings findet dein Plugin mein Gerät nicht als Output Device. Somit funktioniert der Output bei mir nicht. Standardmäßig ist in der App Port 8000 für outputs und 9000 für inputs eingestellt. Ich habe es testweise mal auf 8000 geändert, das funktioniert aber leider auch nicht.


    Gruß

    Nutzer99

  • Hallo Thomas

    Ob man per OSC auch Farben,... zur Laufzeit verändern kann, weiß ich leider noch nicht. Ich denke hier gibt es von TouchOSC noch einige Möglichkeiten.

    Ob das so funktioniert, kann ich dir leider auch nicht sagen. Ich denke aber, hier ist es auch nicht schlimm, wenn das so nicht unterstützt wird. Denn immerhin musst du hier ja bedenken, dass du da "nur" die reinen OSC-Messages überträgst und TouchOSC eine von mehreren Apps ist, mit denen man sich ein Layout bauen kann, welches dann OSC-Messages verschickt. Dass ich die Farben der Buttons im Softdesk ändern kann, kommt halt daher, dass wir im Team das Softdesk halt eben ebenfalls selbst entwickelt haben und die Controls entsprechend auf die Möglichkeiten des Input Assignments abstimmen konnten.


    Deine Erweiterung, Layouts von TouchOSC direkt als Regelsatz zu importieren ist, ist in der Tat eine feine Sache. Da bin ich mal gespannt wie das funktioniert. Gerade bei umfangreichen Layouts war dies ja immer eine nervige Angelegenheit, diese anzulegen. Aber mal anders herum gefragt: siehst du hier ggf. auch eine Möglichkeit, das komplett zu automatisieren und zwar anhand des Layouts, welches auf dem Tablet geladen ist? Sprich: ich lege ein Regelsatz an, mit dem ich arbeiten möchte und wo ich das zugehörige Layout benenne. Sobald ich dieses Layout auf dem Tablet lade, werden alle Steuerelemente vom Tablet an dein Plugin übertragen. Damit bräuchte ich danach immer nur noch das Layout auf dem Tablet zu aktualisieren und sehe dies direkt im Input Assignment. Manuelle Tätigkeiten in dem Plugin könnten dann entfallen - es läuft nach der initialen Einrichtung unauffällig im Hintergrund mit.


    Wenn ich heute Abend zu Hause bin, schaue ich mir deine neuste Version auch live an. Ich bin wie gesagt sehr gespannt.


    Bis dahin, Stefan.

  • Hallo Nutzer99


    Danke für das Hochladen deines Layouts.

    Habe noch einen Tag vorausgesetzt, der bei mir immer da war, aber anscheinend doch optional ist.

    Bitte die angehängte DLL tauschen.

    TouchOscLayoutParser.zip


    Bezüglich Gerät finden:

    Ich habe hier leider aktuell nur mein Ipad zum Testen. Dieses wird aber in jedem Fall gefunden wenn ich bei laufender TouchOSC App auf "Update Devices" klicke.
    Bin gerade dabei mir ein Android Gerät zu organisieren um es auch dort zu testen.

    Sobald ich was neues habe melde ich mich wieder.


    mfg

    Thomas

  • Hallo Stefan, nutzer99


    Danke wieder für euer Feedback. Habe mal wieder weiter am Plugin gebaut (V1.0.0.4).


    nutzer99: Wenn man den Entwicklerforen glauben kann, dann dürfte es unter Android ca. 1/3 Geräte geben, die die für das automatische Registrieren notwendige Betriebssystem Funktion "Multicast DNS" nicht unterstützen.

    Habe daher, wie von dir angeregt, die Möglichkeit des Manuellen Anlegens und Löschens von Geräten hinzugefügt und bei mir auch erfolgreich getestet.

    Diese werden dann auch im Projekt gespeichert und wieder geladen.

    Um doppelte Geräte zu vermeiden, werden beim automatischen Anlegen bereits bestehende IP/Port Kombinationen nicht registriert.


    Stefan:

    Deine Anregungen sind toll, leider so nicht umsetzbar, da ich keine Möglichkeit / Option gefunden habe um die App dazu zu veranlassen irgend etwas über das geladene Layout auszuspucken.

    Könnte mir noch das Layout direkt vom TouchOsc-Editor holen (so wie die App selbst). Bringt aber aus meiner Sicht nichts, da ja dann die Datei ohnehin schon vorliegt (außer der Editor wäre auf einem anderen Rechner, was aber vermutlich eher selten sein wird). Hier habe ich aber auch eine nette Möglichkeit gefunden sich die Datei über das Netzwerk zu besorgen, sobald der Editor im "Sync Mode" ist. Dazu einfach im Browser die URL "http://IP-Adresse:9658" eingeben --> *.touchOSC Datei wird dann heruntergeladen.

    Um trotzdem zwischen verschiedenen Layouts hin- und herschalten zu können, würde ich damit eher empfehlen, sämtliche benötigte Layouts als Regelsätze anzulegen und auch im InputAssignment zu verknüpfen.

    Damit sich diese aber nicht in die Quere kommen muss darauf geachtet werden, dass alle verwendeten Layouts "Eindeutige" Tags verwenden (gesamter Pfad).


    Habe aber bei meinem rumprobieren noch ein paar Funktionen gefunden, die ich noch hinzufügen möchte, bzw. noch keinen Anwendungsfall gefunden habe:

    - Touch Messages: Unter Optionen kann man "Touch Messages" aktivieren. Damit bekommt man über OSC mitgeteilt, wenn eine Komponente (z.B.: Fader) berührt wird/ist --> zusätzlichen Input Komponente hinzufügen.

    - Farbe der Komponente während Laufzeit änderbar: Man kann per OSC Message die Farbe jeder einzelnen Komponente in TouchOSC zur Laufzeit ändern. Möglich ist hier jede Farbe, die auch im Editor zur Verfügung steht. --> Zusätzlichen Output je Komponente.
    Ich weiß aber noch nicht wie der Output am besten im Input Assignment beschaltet werden müsste (String, int, spezielles Objekt?). Werde mir hier mal die Möglichkeiten im Softdesk ansehen, damit sich die Systeme ähnlich / gleich verhalten. Eventuell könnt ihr mir aber auch Tips geben.

    - XYZ Beschleunigungswerte des Tablets: Diese Funktion kann auch in den Optionen (Accelerometer /accxyz) aktiviert werden. Man bekommt dann die Lage des Tablets im Raum als x/y/z Werte zur Verfügung gestellt.

    Mir ist aber noch kein Anwendungsfall dafür eingefallen. Einfach so die Funktion hinzufügen möchte ich nicht, da hier ziemlich viele Meldungen verschickt werden, sobald man das Tablet in der Hand hält. --> Hat jemand eine Idee

    - Ping: Ebenfalls in den Optionen kann man "Send Ping" aktivieren. Standardmäßíg wird dann alle 60s eine "Ping" Message verschickt. Man könnte hier eventuell einen Input "App läuft noch" realisieren. Aber auch dafür ist mir noch kein Anwendungsfall eingefallen.


    Ansonsten bitte um Rückmeldungen und viel Spaß beim ausprobieren.


    Danke

    Thomas

  • - XYZ Beschleunigungswerte des Tablets: Diese Funktion kann auch in den Optionen (Accelerometer /accxyz) aktiviert werden. Man bekommt dann die Lage des Tablets im Raum als x/y/z Werte zur Verfügung gestellt.

    Mir ist aber noch kein Anwendungsfall dafür eingefallen. Einfach so die Funktion hinzufügen möchte ich nicht, da hier ziemlich viele Meldungen verschickt werden, sobald man das Tablet in der Hand hält. --> Hat jemand eine Idee

    Steuerung der Bewegung eines Moving-Heads?

  • Also das funktioniert richtig gut :)


    Folgende Kleinigkeiten:

    - im Add Device PopUp bitte noch Esc für "Cancel" und Enter für "Ok" einbauen

    - die IP Adresse und den Port kann man leider nicht ändern. Man muss hier das Gerät neu anlegen. Kannst du die Textfelder Editierbar machen? Entweder doppelklick vorne in die Zeile, oder eben nen Edit Button im Menü einfügen


    Aktuell ist es im Softdesk so gelöst, dass der Output mehrere Typen gleichzeitig versteht. Man kann über den gleichen Ausgang den Zustand ändern (also einen Wert), die Farbe (als RGB Wert), oder sogar eine bmp.

    Im Fall der Farbe, gebe ich dem Output einfach nur diesen String für z.b. rot an 255;0;0


    Es ist aber angedacht, die Outputs so umzubauen, dass jede Funktion seinen eigenen Output hat. Es ist möglich, dass ein Output auch mehrere Anschlüsse haben kann.


    Dann gibt es den Output Button 1, welcher wiederum einen Anschluss für den Wert, einen für die Farbe.... hat


    Gruß

    Nutzer99

  • Guten Abend Thomas!


    Nun auch von meiner Seite: das Plugin gefällt mir immer besser. Es arbeitet sehr schön. Richtig gut läuft die Import- und Updatefunktion für die TouchOSC-Layouts. Ein wirklich sehr hilfreiches Feature, was die Einrichtung sehr beschleunigt. Auch die Rückmeldung über die Slider und die Label und das Dimmen der LEDs klappt gut. Auch die Reaktionsgeschwindigkeit ist sehr gut. Ich habe hier mal exemplarisch einen Fader von meinem iPad zu DMXControl 3 geschickz, dort vom Input Assignment verarbeiten und den Wert au einem zweiten Fader auf dem iPad wieder ausgeben lassen.


    Was mir hier noch fehlt: kannst du eine Rückmeldung auch für die Push- und Toggle-Buttons einbauen? Beides würde nämlich die Layouts vereinfachen, weil ich aktuell auf die LEDs zurückgreifen müsste. Das Softdesk bietet hier ja ebenfalls eine entsprechende Funktionalität, wenn du einen Button, wo du als Style Lumos gewählt hast, beispielsweise mit dem Output State einer Cuelist verknüpfst.


    Zum Thema Rückmeldung der Farbe hat ja nutzer99 bereits etwas geschrieben. Ansonsten kann ich dich hier auf unser Schon gewusst? Special #7 verweisen. Dort siehst du eine von mehreren Varianten, den Softdesk-Controls eine Farbe mitzugeben.


    Deine Anregungen sind toll, leider so nicht umsetzbar, da ich keine Möglichkeit / Option gefunden habe um die App dazu zu veranlassen irgend etwas über das geladene Layout auszuspucken.

    Wenn das so nicht möglich ist, dann soll das auch in Ordnung sein. Die Import- / Update-Funktion arbeitet ja ebenfalls sehr gut. Die Mausklicks sind zu verkraften. :D

    Um trotzdem zwischen verschiedenen Layouts hin- und herschalten zu können, würde ich damit eher empfehlen, sämtliche benötigte Layouts als Regelsätze anzulegen und auch im InputAssignment zu verknüpfen.

    Ja. Das sowieso. ;)


    Zum Schluss waren mir noch ein paar kleinere Tippfehler aufgefallen. Denn eigentlich steht das OSC ja so für sich, weswegen es aus meiner Sicht besser wäre, diese drei Buchstaben so auch im Plugin überall groß zu schreiben.


    Dies einmal von meiner Seite. Danke. :)


    Stefan


    PS.: Wenn du mich direkt über das @ ansprechen möchtest, dann müsstest du hier auch meinen Forenname verwenden - nämlich LightningBrothers . Das gemeine ist: wir haben hier im Forum noch ein paar weitere Stefans, wovon einer auch seinen Forumname entsprechend gewählt hat. Und wenn du dann Stefan schreibst, freut er sich nämlich über Benachrichtigungen und ich gehe leer aus. :D

  • nutzer99 :

    LightningBrothers :

    Habe die GUI entsprechend euren Anregungen überarbeitet. Bitte um Rückmeldung ob noch was verbessert werden kann, oder ich was übersehen habe.

    Für die Verarbeitung der Farben habe ich die Unterstützung von verschiedensten Formaten eingebaut. Bitte um Rückmeldung, falls noch was fehlt.

    Auch den "Touched" Eingang konnte ich gleich hinzufügen.

    Tippfehler habe ich hoffentlich alle erwischt. Falls nicht, bitte um kurze Rückmeldung, wo welcher Text nicht passt.

    Bezüglich Push/Toggle Buttons. Die Rückmeldung wäre eigentlich schon vorhanden (Output zum setzen des Signals). In der Umsetzung sehe ich jetzt keinen Unterschied zum Fader. Wenn sich der Wert ändert, dann wird dieser neue Wert an die APP zurück übertragen. Habe es bei mir ausprobiert und kann z.B.: die Blackout Funktion von allen Seiten schalten, bzw. auch anzeigen.

    Bitte um kurzes Feedback, was du genau meinst.


    Danke für eure Rückmeldungen und Unterstützung.


    PS: Hoffe ich habe es jetzt auch mit dem @ Richtiggemacht! :D

  • Hi Thomas,


    Danke für deine Ausführlichen Infos und Upgrades. Ich hoffe ich finde die Zeit das Mal ausführlicher zu testen. Aktuell immer nur so ah tolles neues Feature Mal kurz antesten läuft. Intensiv Mal speichern/Plugin deaktivieren, Projekt auf anderem Rechner ausführen und so fehlt alles noch.

    Bis jetzt bin ich sehr zufrieden damit. Wäre irgendwann cool, wenn das Plugin auch ohne GUI als Kernel funktionieren würde. Dann bräuchte man nichtmal die GUI zum steuern. Aber das hat noch Zeit bis zur 3.3. unsere Entwickler bauen ja aktuell die gesamte Kommunikation um.


    Gruß

    Nutzer99

  • Danke für die neue Version. Ich habe direkt mal weiter mit herumgespielt und bin weiterhin schwer begeistert. So langsam muss ich mir mal Gedanken über ein "vernünftiges" Layout machen. ;)


    Zur aktuellen Version hätte ich noch folgende Anmerkungen:

    • Status von Push- und Toggle-Buttons: Üblicherweise ist es in DMXControl 3 so, dass Eingänge von Nodes, aber eben auch von Outputs mehrere Dinge verstehen. Im Falle der Buttons muss ich den Status explizit mit true und false zurückmelden. Hier wäre es gut, wenn die Buttons ebenfalls auf 0 und 1 reagieren würden. Ich hatte es nämlich mit dem Cuelist-State-Output versucht und dieser sendet neben Stopped, Running und Paused nämlich 0, 1 und 2. Erst über den Blackout bin ich darauf gekommen.
    • Farben: Das Ändern der Farben über den Farbindex-Wert (1 bis 9) und den Farbname (red, green, etc.. klappt). Ich finde es auch cool, dass man auch in den Multielementen die Farben einzeln anpassen kann. Was etwas ungünstig ist, ist das Arbeiten mit RGB-Werten. Hier muss ich ja die vorgegeben Farben exakt treffen, damit ich die Elemente darüber in ihrer Darstellung ändern kann.
    • Aufteilung in mehrere In- und Outputs: Eine gute Idee. Auch das Verschieben in die Ordner hat nach dem erneuten Importieren des Layouts hat gut funktioniert. So sieht der Baum ein ganzes Stück aufgeräumter aus. Ich würde hier jedoch noch ein paar weiterführende Änderungen vornehmen bzw. Vorschlagen und zur Diskussion stellen, um die Übersichtlichkeit noch ein Stück weiter zu erhöhen.
      • Insgesamt dürfte es etwas eleganter aussehen, wenn du anstelle des Unterstrichs ein Leerzeichen verwendest, also Fader1 und Fader1 Color statt Fader1_Color. Bei den Multielementen könnte ich mir auch exemplarisch an einer 3x3-Matrix den Zusatz nach dem Prinzip Multipush1 1-1, Multipush1 2-1, Multipush 3-2 usw. angenehmer vorstellen.
      • Beim Input "touched" zum Beispiel bei den Multifadern kannst du glaube ich auf den Zusatz _1 (oder 1) beim Namen Multifader1_1_Touched verzichten, weil dieser Input für das komplette Element zählt.
    • In meiner auf englisch eingestellten GUI lautet der Titel nämlich "OSC-Verwaltung" - das kommt irgendwie komisch rüber. Kannst du mal prüfen, dass du die eingestellte Sprache von DMXControl 3 ausliest bzw. ihn korrigierst, sofern du noch ohne Übersetzung arbeitest?

    Eine Gretchenfrage hätte ich aber zum Schluss insgesamt zu den Namen im Input- und Output: kann man eventuell auf den Namenszusatz im Baum grundsätzlich verzichten? Sprich: der Name des Elements steht im Ordner, die einzelnen In- und Outputs heißen dann nur noch so, was sie tatsächlich machen, beim Fader also Value und Color. Hintergrund ist natürlich, wenn man längere eigene Namen einsetzt. Dann muss ich mir die Bäume recht breit ziehen, möchte ich den Funktionszusatz sehen. Bei den Cuelists und Mastern wird ja bereits so vorgegangen, aber hier muss ich auch ehrlicherweise sagen, dass der Name dann im Titel des Nodes steht. Im Endeffekt entspräche mein Vorschlag dem, wie es bei der Tastatur umgesetzt. Welche Belegung (A ohne, Umsch+A, Strg+A) erkennt man zur Zeit nur in der Tabellenansicht. Vielleicht kann man bei deinem OSC-Plugin so verfahren, wenn du (sofern möglich) den In- und Outputs ein Tooltipp spendierst, wo dann unter anderem drin steht, zu welchem Element In- bzw. Output gehört. Was sagt der Rest hierzu?


    Um die Antwort von nutzer99 noch zu ergänzen: hier wäre die Frage, ob du das Plugin zum Teil in den Kernel verschieben kannst, sodass für den Betrieb entsprechend nur der Kernel benötigt wird und sich die Tablets dann mit ihm verbinden als alles über die GUI laufen zu lassen. Denn in der aktuell vorliegenden Version muss die GUI geöffnet sein. Diese Weiterentwicklung wäre aber auch aus meiner Sicht ein längerfristiges Projekt. Für DMXControl 3.2.x wäre das vertanene Arbeit, weil dann für DMXControl 3.3 ein weiterer Umbau deines Plugins erforderlich wäre. Denn wie an vielen Stellen (zuletzt in unserem letzten Livestream "Live-Coding mit Arne") vorgestellt, wird die Netzwerkkommunikation von .net Remoting auf gRPC umgestellt. Dies verbessert dann nicht nur das Zusammenspiel zwischen GUI und Kernel allein, sondern vereinfacht / senkt die Hürde, mit mehreren GUIs an einem Projekt per Netzwerk zu arbeiten. Parallel ermöglicht die dann in dem Zusammenhang veröffentlichte Protobuff-Schnittstelle, dass du eine komplett eigenständige Anwendung programmieren kannst, die dann mit dem Kernel via gRPC kommuniziert und Aktionen initiiert sowie auf diese reagiert.


    Soviel soweit von mir. ;)