Posts by JPK

    Sooo, Soon5 und ich sind dem Problem mal auf den Grund gegangen und haben es nun behoben (kommt dann im RC4). Dieses Problem bestand bei allen Sinks im Input Assignment, die aus der GUI heraus erstellt werden (also die Outputs wie z.B. ein MIDI Out oder eben die Cuelist Monitor Sink). Der Punkt mit den nicht leuchtenden Midi Buttons sollte damit dann auch behoben sein. Falls es interessiert, was das Problem war: Hier gab es eine sog. Race Condition zwischen zwei Aktionen. Dabei hat die GUI das Erstellen einer Sink im Kernel angefragt und dann darauf gewartet, dass sie das OK bekommt, bevor sie diese Sink bei sich selbst einfügt. Der Kernel hat aber während dem Erstellen schon eine Update-Nachricht mit den aktuellen Werten geschickt. Je nachdem, ob die Nachricht "Sink wurde erstellt" oder "Update der Sink" zuerst in der GUI ankam, wurde der Cuelist Monitor korrekt initialisiert oder blieb halt leer, weil für das Update die passende Sink nicht gefunden wurde (weil die GUI ja noch auf das OK für das eigene Hinzufügen gewartet hat). Der entsprechende Bug dazu ist FS#4813 : Input Assignment / Softdesk: Cuelist Monitor leer bei Projekt laden


    Viele Grüße

    JP

    Hi,


    ich könnte mir vorstellen, dass das ein Bug in dem MasterNode im IA ist, denn hier wird beschrieben, dass dieses Problem mit dem GrandMaster Node auftritt FS#5286 : Bei Verwendung von Grandmaster Node Master bei Laden vom Projekt immer auf 0% Wo ich gerade so darüber nachdenke, hat Beni200 davon auch mal berichtet (aber kein Bugtrackerticket angelegt 8) ). Am besten wäre es, vielleicht noch einen Kommentar unter FS#5286 zu setzen, damit klar ist, dass das auch bei anderen Mastern auftritt.


    Viele Grüße

    JP

    Und um das mal auch etwas ins Verhältnis zu setzen, sollte Angst vor dem Einsatz des RCs bestehen: Bei uns wandern neue DMXC Versionen erst einmal durch den Beta-Test. Hier gibt es dann normalerweise 3 - 5 Versionen. Dieses Mal gab es 12 Versionen, weil wir noch einiges hinzugefügt haben. Alle diese Beta-Versionen wurden bereits umfassend getestet. Außerdem haben wir, wie Stefan schon gesagt hat, mittlerweile 3 öffentlich getestete Versionen von DMXControl 3 und bisher kamen fast keine Rückmeldungen von härteren Bugs. Die 2 einzigen Ausnahmen ist das Interface-Thema (aktuell funktionieren einige Interfaces noch nicht mit DMXC3) und bei einer zu alten Grafikkarte (>10 Jahre) startet der Kernel nicht, obwohl er in einen Fallback-Modus gehen sollte. Aber bis auf diese Bugs sind die RCs so stabil, dass ich diese ganz normal bei Veranstaltungen einsetze und diese ähnlich stabil laufen wie die 3.2.3 :)

    Naja, eigentlich nicht. der one shot ist ja dazu da, einen Effekt eine gewisse Anzahl lang durchlaufen zu lassen. Habe ich also in einer Cue einen Sinus auf einen Dimmer gelegt und will diesen Sinus genau 3 Mal durchlaufen haben, dann kann ich das entweder ausrechnen oder ich nehme den one shot trigger bei der nächsten Cue. Das Ausrechnen hat den Nachteil, dass ich a) berechnen muss, wie lange der Sinus jetzt genau dauert und b) bei einer Änderung muss ich das auch hier ändern. Der one shot Trigger macht die Änderung ganz automatisch mit. Da aber in DMXC 3 Cues keine Dauer haben sondern deren Dauer über die Triggerzeit der nächsten Cue bestimmt wird, muss man den one shot Trigger eben auf die nächste Cue anwenden. Wir sagen üblicherweise, dass diese Cue eine leere Dummycue sein kann. Aber so viel ich weiß spricht nichts dagegen, dass diese Cue auch Werte enthält. Es geht ja wirklich nur darum, dass diese dann getriggert wird, wenn der Effekt in der vorherigen Cue komplett durchgelaufen ist.

    Hmmm es kann sein, dass der "one shot" trigger evtl. insgesamt nicht richtig funktioniert. Der wird sehr selten verwendet und ich könnte mir vorstellen, dass er deshalb auch selten getestet wird.

    Ich hatte offen gestanden mir bislang noch nicht so viel Gedanken darüber gemacht und die zusätzlichen Kanäle mehr oder weniger manuell bedient. Habe mich erst jetzt entschlossen die Farbmischung anders zu gestallten.

    Naja, das ist ja auch immer eine Gewohnheitssache und wenn man sich an eine Art und Weise gewöhnt hat, fällt es erst einmal schwierig, da wieder einen anderen Weg zu gehen. Hatte ich auch gemerkt, als ich damals von der 2er auf die 3er umgestiegen bin. Ich hatte auch längere Zeit noch die Kanalübersicht offen gehabt, weil ich es gewohnt war, in der 2er dort alles zu kontrollieren. Mittlerweile habe ich mich umgestellt, aber das hat sicher mindestens ein halbes Jahr gedauert :saint: Heute sind hauptsächlich die Stage View sowie die Haupt-Cuelist oder die Executoren offen :) .

    Hi,


    hier triffst du auf einen Teil von DMXControl 3, der aus verschiedenen Gründen so kompliziert ist, wie er ist. Hier geschieht sehr viel hin- und hergerechne im Hintergrund, was man auf den ersten Blick nicht sieht. Dröseln wir das mal auf: Standard-Farben werden in DMXControl 3 üblicherweise auf RGB normalisiert. Sprich, alle Eingaben, die du über das Farbkreis-Control oder in dem "Color"-Eintrag (nicht zu verwechseln mit den Fadern unterhalb des Color-Eintrags!) tätgst, sind in RGB. Selbst die Eingaben für die Farbfilter bei Moving Heads laufen über RGB und HSV und CMY werden ebenfalls auf RGB umgerechnet. Diese Werte werden dann so durch die verschiedenen Teile von DMXControl 3 durchgereicht, gemixt und verrechnet. Fast am Schluss hat man dann die Farbe (in RGB), die das Gerät haben soll. Erst an diesem Punkt wird dann die eigentliche Farbe auf den Farb-Kanälen ausgerechnet und beruht dann auf deinen Einstellungen bezüglich "Ersetzen" und den anderen Modi. So wird dann eben z.B. bei "Ersetzen" des Amber-Kanals der Rot und Grün-Kanal entsprechend reduziert und Amber ausgegeben. Oder es wird der entsprechende Farbfilter auf dem Farbrad ausgewählt. Das kennt aber nur der Hardware Abstraction Layer von DMXControl 3, wie er es korrekt mixen muss, damit es auf dem Gerät korrekt ankommt. Die anderen Teile von DMXControl 3 kennen davon nur wenig.


    Nun fragst du dich sicher, warum ich oben explizit die von dir angesprochenen Fader ausgeschlossen habe. An diesem Punkt beginnt jetzt das "Chaos". Ein valider Punkt, der schon recht am Anfang angefragt wurde und den wir auch anbieten möchten ist, die einzelnen Farbkanäle explizit anzusteuern. Das ist einerseits nötig, weil es keine Möglichkeit gibt, UV aus RGB herauszurechnen und auf der anderen Seite möchte man manchmal doch durchaus mal noch etwas genauer einstellen, wie dann z.B. das Weiß bei Pastellfarben dazugemischt wird. Daher kann man jeden einzelnen Farbkanal des Scheinwerfers auch einzeln per Fader ansteuern. Diese Werte werden zusammen mit den RGB-Werten abgespeichert und bei dem Weg durch die Software mittransportiert (in einem Objekt, was wir LumosColor nennen :)). Diese zusätzlichen Farbwerte umgehen einen Teil der Berechnung und überdrücken dabei teilweise die Werte aus der RGB-Berechnung. Und diese Kombination macht uns auch massiv das Leben schwer, wenn man z.B. in einer Szene einen RGB-Wert gespeichert hat und in der nächsten Szene einen Wert, der mit den Fadern eingestellt wurde. Wir müssen trotzdem sauber dazwischen überblenden. Und die Farbmaster machen es an dieser Stelle auch nicht einfacher..... Das alles und der Fakt, dass dann die Stage View auch wissen müsste, wie genau die Geräte hier reagieren, um die Farbe korrekt darzustellen ist der Grund, warum das nicht so dargestellt wird und es auch keinen einfachen Weg gibt, das sauber zu machen. Wir haben hier immer eine Überbestimmtheit, sprich es gibt den eigentlich mit RGB voll bestimmbare Farbraum. Aber dieser wird von den Scheinwerferherstellern um zusätzliche, überlagerte / abhängige Farbdimensionen erweitert. Das sorgt dafür, dass wir a) bei der Steuerung diese Parallelität fahren müssen und b) bei der Ansteuerung diesen Aufwand treiben müssen. Daher ist eben das Farbsystem auch so komplex und so tief integriert, dass wir hier nur sehr schwer grundlegende Änderungen machen können. Und das ist letztendlich auch der Grund, warum die Stage View das so darstellt, wie sie das tut.


    Ich hoffe, so wird etwas klarer, warum das eher schwierig wird, diese zusätzlichen Fader in der Stage View sauber zu visualisieren.

    Viele Grüße

    JP

    Hallo,


    schau mal, ob deine Master nach unten gezogen sind. Außerdem hat DMXControl 3 seit der 3.3.0 ein Warning-Feature, bei dem dich die Software warnt, wenn etwas verhindert, dass Scheinwerfer an sind. Du findest das Feature in der Statusleiste unten rechts das gelbe Ausrufezeichen.



    Da einfach draufklicken und dann bekommst du die Info, was einen Output verhindert.


    Viele Grüße

    JP


    P.S.: Gleich vorab: Ja, das Fenster wächst im RC3 noch nicht mit dem Inhalt. Sprich es kann sein, dass mehr Informationen gerade nicht dargestellt werden, weil diese unten außerhalb des Fensters im nicht sichtbaren Bereich sind. Das wird mit der nächsten Version gefixt

    Ahhh, das meinst du. Nein, das sind definitiv keine Reste vom Programmieren. Der Jenkins ist unser Build-System (siehe https://www.jenkins.io/). Sprich damit bauen wir DMXControl 3 und den Installer automatisiert, bevor wir es ausliefern. Zu diesem sog. Stacktrace, den du hier in rot siehst: Tritt ein Fehler in einem Programm auf, dann weiß man als Entwickler normalerweise nicht, wo dieser Fehler genau aufgetreten ist. Man bekommt normalerweise nur eine Speicheradresse in der Fehlermeldung. Nur woher soll ich als Entwickler genau wissen, wo bei dir im Speicher jetzt genau welche Funktion liegt. Deshalb liefern wir die sog. Debug-Symbole mit DMXControl 3 aus (die werden ebenfalls beim Erzeugen der Software erstellt). Damit kann dann, wenn beim Ausführen von DMXControl 3 ein Fehler auftritt, genau zugeordnet werden wo das passiert ist. Das geht bis auf die einzelne Codezeile genau. Der Pfad gibt also die Sourcecode-Datei an und die Nummer dahinter die Zeile. Außerdem siehst du den gesamten Aufrufpfads bis zu dieser Funktion also z.B. dass die Funktion in AbstractDMXInterfaceManager.cs Zeile 1410 durch eine Funktion in Zeile 118 aufgerufen wurde. Um aber diesen Pfad angeben zu können, braucht der Compiler eine Pfad-Referenz. Daher nimmt er eben die Pfadangabe, so wie er sie auf dem System findet, auf dem die Software erstellt wird. Deshalb siehst du da die Pfadangabe von unserem Jenkins. Es liegt also beim Erstellen von DMXControl 3 tatsächlich in diesem Pfad die entsprechende Sourcecode-Datei. Aber der Fehler ist tatsächlich einer, der bei dir auf deinem PC in DMXControl 3 auftritt. Genauer gesagt in der DMXInterfaceMgmtLib beim initialisieren des Anyma Interfaces.

    Hallo,


    also ich habe jetzt mal deinen DDF (von Device Definition File :)) bei mir in den neuesten DMXC-Build eingefügt und mal getestet. Dabei habe ich keine Auffälligkeiten festgestellt. Das DDF reagiert so wie es soll. Hast du vielleicht noch eine alte Version im Projekt, die dann noch geladen wird?



    Viele Grüße

    JP

    OpenGL4.6

    Halt, OpenGL 4.3 wird benötigt, nicht 4.6 :saint: Ich habe jetzt aber auch noch mal in den Code geschaut und wir hatten eigentlich auch schon davor (also mit der älteren OpenTK Version) OpenGL 4.3 angefordert. Von der Hinsicht hat sich also eigentlich nichts geändert. Höchstens, dass GLFW, worauf OpenTK 4 aufbaut da etwas anderes braucht. Aber sonst haben sich unsere Anforderungen zwischen DMXControl 3.2.3 und 3.3.0 (was OpenGL an sich an geht) nicht geändert.

    Mal aus der Entwicklersicht eine Einschätzung dazu: Das Compilieren von anderen Versionen als X86-Windows-Versionen ist aktuell kein Ziel von uns. Aber wenn man das möchte, muss man mehr oder weniger die drei Teile von DMXC getrennt betrachten. Außerdem muss man auch zwischen den Plattformen und der Umgebung unterscheiden.

    • Das geringste Problem sollte der Umbra machen. Ich sehe aktuell wenige bis keine Probleme, den Umbra auch für Linux und MacOS zu bauen. Letztendlich nutzt dieser (nach meinem aktuellen Kenntnisstand) keine plattformspezifische Library. Wie das mit der Umgebung ist (also X86 oder Arm) kann ich gerade nicht sagen. Das müsste man mal ausprobieren.
    • Ein größeres Problem ist der Kernel. Ein Grund für den Wechsel zu OpenTK war auch, hier plattformunabhängig zu werden. Allerdings gibt es aktuell noch plattformabhängige Libraries im Kernel, unter anderem für die Verarbeitung von Bildern. Fun Fact: Ich bin gerade dabei, die Compiler-Warnungen zu reduzieren und die Warnung, die mit Abstand am häufigsten (also über 400 Mal) auftritt, ist die Warnung bezüglich der Plattformabhängigkeit der Libs. Diese Libraries müssten wir erst austauschen, um dann volle Plattformunabhängigkeit zu haben. Damit sollten dann sowohl Umbra als auch der Kernel auf Linux laufen und mit etwas Testen auch auf Arm.
    • Wo ich mittelfristig wenige Hoffnungen habe ist die GUI. Einerseits müssen wir erst einmal weg von XNA, denn das hält uns komplett zurück und dürfte irgendwann auch unter X86-Windows zu Problemen führen. Dabei wechseln wir erst einmal alle Fenster nach WPF, also sowohl die XNA-Fenster als auch die WinForms-Fenster. WPF kann (ab .Net 6.0) problemlos auf X86- und Arm-Windows laufen. Allerdings ist auch WPF ein reines Windows-Framework und nicht plattformunabhängig. Wir müssten dann in einem weiteren Schritt alles nach MAUI portieren, dem neuesten, plattformunabhängigen UI-Framework, was dann auf Windows, MacOS, iOS und Android laufen würde. Linux wird nicht offiziell davon unterstützt und die Community müsste sich darum kümmern. Warum wir aktuell nicht auf MAUI wechseln hat einfach den Hintergrund, dass da noch einiges nicht voll ausgereift ist und einige Features noch fehlen. Dieser Umzug wäre wohl dann einfacher sobald wir alles auf WPF umgezogen haben, weil die grundlegende Struktur von WPF und MAUI recht ähnlich ist. Allerdings müsste man dann die komplette Oberflächen-Definition in MAUI nachbauen, was ich aktuell noch nicht sehe. Das kann sich aber irgendwann (also vermutlich eher in Jahren als in Monaten) ändern.

    So viel mal zu dem technischen Hintergrund.

    Viele Grüße

    JP

    Hallo und herzlich willkommen im Forum,


    nun auch einmal eine Rückmeldung an dich. Wir haben diene umfassende Nachricht gesehen und sind da noch intern am diskutieren und der Prozess ist noch nicht abgeschlossen. Soviel aber mal vorab: Wir wissen um die Problematik mit dem Tearing. Wir haben auch schon for ein paar Jahren überlegt gehabt, wie wir das lösen können. Haben aber noch nichts dazu integriert, weil es da auch ein paar Randbedingungen zu beachten gibt. Wir werden uns aber hierzu noch einmal äußern, sobald wir intern weiter diskutiert haben.


    Viele Grüße

    JP

    Das keine zig Meter Y sein sollen war mir klar.
    Aber ich dachte darf man gar nicht.

    Rein technisch gesehen, was da dahinter steckt: An jedem offenen oder geschlossenen Ende einer Datenleitung (oder auch nur einer Feder / einem Seil, das lose auf dem Boden liegt oder irgendwo eingeklemmt ist) gibt es Reflexionen. Sprich eine Welle wandert zum Ende und wird dann am geschlossenen Ende invertiert zurück geworfen, an einem offenen Ende wird es uninvertiert zurückgeworfen.Das Signal wird also wenn auch abgeschwächt wieder zurück geworfen und reagiert dabei mit dem eigentlichen Signal, denn hier kommt Interferenz ins Spiel. Kurzum, wenn du kurze Abzweige hast, sind die Reflexionen sehr ähnlich zu deinem eigentlichen Signal. Das ist dann nicht das Problem. Werden die Seitenarme länger, können diese Reflexionen tatsächlich das Signal beeinträchtigen und deshalb ist das eben nicht erlaubt. Zweige bis so etwa 10-15cm sollten aber kein Problem machen.