Presets mir touchOSC

  • Hallo,


    gibts irgendeine Möglichkeit Presets per TouchOSC zu verändern? z.B. um bestimmte MovingHead Positionen vor dem Auftritt zu ändern?


    Wie funktioniert das generell, wenn ich eine Bewegung für Moving Heads in der CueList drin habe und schicke ich dann per TouchOSC eine neue Position der Moving Heads dort hin. Überschreibt er dann die vom Cue und die Bewegung der Cue List wird erst wieder aktiv, wenn ich die Cue neustarte?


    In meiner alten Software wurden die DMX Kanäle dann in einen "Live Modus" der alle anderen Sachen überschrieben hat. Also egal was bei CueLists oder Programmer eingestellt war, der Wert aus dem Live Modus wurde verwendet.

    Über einen Knopf konnte man dann die Live Aktionen wieder auslösen...



  • Hallo!


    Bei DMXControl 3 ist es so, dass du am konkreten Beispiel beliebig viele Cuelist mit Bewegungen und Positionen starten kannst. Die Ausgabe läuft hier nach dem LTP-Modus, das heißt die zuletzt aktivierte Cuelist ist aktiv. Wenn du die Cuelists in umgekehrter Reihenfolge wieder deaktivierst, springt die Ausgabe entsprechend zurück. Hast du nun aber verschiedene Cuelist Groups angelegt und diese auf "Single List Running" gestellt, gilt die oben genannte Aussage natürlich ist. Hier gilt es nur zu beachten, dass du aktuell weder über TouchOSC, MIDI, Softdesk noch über andere externe Steuerungsmöglichkeiten kein Feedback erhältst, wenn hier durch die Cuelist Group eine Cuelist ausgeschaltet wurde.


    Ob du nun über TouchOSC auch direkt Presets editieren kann, weiß ich leider nicht. Von meiner Einschätzung her würde ich sagen, dass es nicht geht - zumindest nicht ohne ein Plugin, was dir einen entsprechenden Zugriff auf die jeweilige Cue gibt, diese in den Programmer schiebt und dir dann über eine Übersicht alle im Cue hinterlegten Geräte ausgibt.


    Viele Grüße, Stefan.

  • Hierfür bräuchte ich dann wahrscheinlich ein GUI Plugin oder?


    Was müsste ich da über Plugin tun?


    1. Programmer löschen.

    2. Preset in Programmer laden

    3. DMX Werte ändern

    4. Werte von Programmer in Preset ersetzen


    Reicht das oder ist da sonst noch was notwendig?

  • Fast: der Schritt 3 besteht eigentlich aus zwei Tätigkeiten bzw. einer Schleife: Gerät oder Gruppe in Stage View auswählen und dann die neuen Werte in das Device Control schreiben. Einfach klassische DMX-Werte anpassen, sprich ja gegen das fundamentale Konzept von DMXControl 3 und ist deswegen nicht vorgesehen - vielmehr passt du ja Eigenschaften an.


    Aber mal anders gefragt: kannst du deine Bewegungen und Positionen nicht so programmieren, dass du eigentlich ohne Anpassungen auskommst? Bzw. kannst du das Lichtsetup so stellen, dass das immer passt (also Moving Heads immer an der gleichen Position und immer gleich ausgerichtet)?


    Des weiteren die Frage: Sind exakt ausgerichtete Positionen und Bewegungen eigentlich so essentiell wichtig für eure Show, dass du diesen Aufwand im Vorfeld oder auch während der Show treiben musst? Ich stelle die Frage halt deswegen, um ggf. zu vermeiden, dass du dich in etwas verrennst, was ganz doof gesprochen nur einen begrenzten Mehrwert für die gesamte Show bringt.

  • Es gibt eine Position für Moving Heads, die ich jedes mal anpassen muss. Und zwar wird unser Bandlogo über die Moving Heads irgendwo wo es passt angezeigt. Diese Position muss ich jedes mal ausrichten. Das wäre hier ein Preset, dass in eine CueList namens Pause drin ist.

    Und mich nervt das schon tierisch, dass ich da jedes mal vor der Show zu meinen PC rennen muss und das machen muss.

    Ein 2. Grund wäre, wir haben hinten bewegbare Washer, die nicht jedes mal gleich stehen und es da eine Position gibt, die den Hintergrund ausleuchten und das ist auch jedes mal anders.


    Oder gibts für mein Vorhaben generell eine leichtere Variante?


    Bewegungen möchte ich sowiese nicht jedes mal anpassen...

  • Wie heißten die Befehle?


    1. Programmer löschen.

    ConnectionManager.getInstance().GuiSession.ProgrammerScene...???

    2. Preset in Programmer laden

    ConnectionManager.getInstance().GuiSession.GetPresetByID("MH Position").;

    3. Bestimmtes Gerät markieren

    ConnectionManager.getInstance().GuiSession.GetDeviceByID("MH1").???

    4. Pan und Tilt ändern

    ConnectionManager.getInstance().GuiSession.GetDeviceByID("MH1").???


    Vielen Dank für die Hilfe.

    Schön langsam gefällt mir die Möglichkeit eigene Plugins hinzuzufügen, weil das ganze sehr simpel und effektiv ist.

  • Ich kann dir deine eigentliche Frage nicht beantworten. Was ich aber sagen kann (oder zumindest behaupten möchte): eine leistungsfähige DMX-Steuerungssoftware, an die du so effektiv eigene Bausteine andocken kannst, findest du bestimmt nicht so schnell wieder, die dir dann vor allem noch kostenlos zur Verfügung steht... ^^

  • 1. Programmer löschen.

    Code
    ISessionFacade guiSession = ConnectionManager.getInstance().GuiSession;
    ICommand c = guiSession.getCommandInstance("Kernel", "clearProgrammer");
    c.execute(guiSession.Name);

    2. Preset in Programmer laden

    Was willst du machen? Das Preset verwenden oder auf eine Gruppe anwenden?


    3. Bestimmtes Gerät markieren

    Code
    var devices = new string[] { deviceIDs }; //Irgendwie ein Array der Device IDs erzeugen, kann auch 1 Device sein, oder 0, wenn die Selektion aufgehoben werden soll.
    ISessionFacade guiSession = ConnectionManager.getInstance().GuiSession;
    ICommand c = guiSession.getCommandInstance("Kernel", "createSelectedDeviceGroup");
    c.execute(guiSession.Name, devices, null); //null am Ende ist wichtig!


    4. Pan und Tilt ändern

    Code
    var g = ConnectionManager.getInstance().GuiSession.SelectedDeviceGroup
    var p = g.GUIProperties.First(c => c.PropertyType == EPropertyType.Position);
    p.ProgrammerValue = new Position(17.4, 47.11);
  • 2. Preset in Programmer laden

    Was willst du machen? Das Preset verwenden oder auf eine Gruppe anwenden?

    Ich will im Prinzip die Funktion aus dem PopupMenu der Presests "Edit in Programmer" verwenden.


    Und ein Befehl geht mir auch noch ab:

    Am Schluss die Replace Funktion der Presets um die Änderungen auf das Preset dauerhauft zu übernehmen?

  • So sollte das ganze dann am Ipad ausschauen:

    Zuerst oben das zu ändernde Preset auswählen. Dann nach der Reihe die Geräte auswählen und einstellen und am Schluss Preset wegschreiben.



  • Alles klar.

    Code
                        ISessionFacade session = ConnectionManager.getInstance().GuiSession;
                        ICommand c = session.getCommandInstance("Kernel", "editPresetInProgrammer");
                        c.execute(session.Name, presetId, blind);

    blind ist ein bool. Die Bedeutung ist denke ich klar.


    Code
    ISessionFacade session = ConnectionManager.getInstance().GuiSession;
    ICommand c = session.getCommandInstance("Kernel", "replacePresetWithProgrammer");
    c.execute(session.Name, preset.ID, null);

    Der letzte Parameter ist vom Typ "ProgrammerFilterPredicate". Das ist eine Klasse in der normalerweise noch auf Devices, Gruppen oder Eigenschaften eingeschränkt werden kann. Wenn man das nicht braucht, dann ist null als Wert auch OK.

  • So hab das ganze zum Laufen bekommen, war wirklich nicht viel Aufwand.


    Vielen Dank für die Unterstützung.


    Und ich muss sagen, die Steuerung per TouchOSC ist wirklich genial.

    Ganz einfach ohne Aufwand Handy raus, Preset auswählen, Werte verändern und speichern.

  • So eine Erweiterung möchte ich noch machen, da bräuchte ich aber wieder eure Hilfe.

    Und zwar will ich jetzt auch noch dir "0-Position" der Moving Heads über das Plugin ändern. (Glaub das ist wahrscheinlich das Offset)


    Grund dafür ist, da bei uns die Licht Stative mit den Moving Heads vor der Bühne nie parallel zur Bühne stehen sondern meisten etwas schief... Und deswegen würden die Bewegungen immer anders aussehen. Wenn ich jetzt vor dem Auftritt sage der 0 Punkt von Pan ist um z.B. 30 verschoben.


    Wie kann ich da drauf zugreifen?

    Und ist dazu das Offset da, wie ich vermute?

  • Hallo!


    Richtig. Genau dafür sind die Offsets für Pan und Tilt da, dass du alle Geräte in eine gleiche Richtung ausrichten kannst, damit die Bewegungen wieder gleich aussehen. Bedenke aber, dass du den Geräten auch immer ihren Schwenkbereich einschränkst. Das fällt natürlich immer erst ins Gewicht, wenn du sehr weite Fahrten einsetzt. Bei einer einfachen Kreisfahrt oder einem Schwenken über die Pan-Achse mit einem Gesamtwinkel von 180° (Amplitude 90°) fällt das im Normalfall nicht ins Gewicht.


    Grundsätzlich empfiehlt es sich, dass du dir die Geräte markierst, damit sie ihre grundlegende Ausrichtung soweit immer gleich ist und du zum Beispiel nicht auch noch mit Pan- und Tilt-Invertierung arbeiten musst. Denn ab einem bestimmten Offset macht es mehr Sinn, die Pan- oder Tilt-Invertierung mit einzusetzen, damit du wieder mehr Bewegungsfreiheit für die Geräte erhältst.


    Viele Grüße, Stefan.

  • 4. Pan und Tilt ändern

    Code
    var g = ConnectionManager.getInstance().GuiSession.SelectedDeviceGroup
    var p = g.GUIProperties.First(c => c.PropertyType == EPropertyType.Position);
    p.ProgrammerValue = new Position(17.4, 47.11);

    Servus,


    eine Frage hätte ich noch. Da ich im MidiPlugin ja entweder nur Pan als Fader Messager oder nur Tilt als Fader Message, kann ich ja nicht einfach die Position mit new Postion anlegen.

    Ich müsste irgendwie den bestehenden Wert rausfinden. Wie funktioniert da?


    new Position(<panValueFromMidi>, p.GetCurrentTiltPosition());


    Oder kann ich p.ProgrammerValue einfach zu Postion casten und dann den aktuellen Wert auslesen?

    ((Position)p.ProgrammerValue).Tilt = 123

  • Geht einfacher:


    C
    var pan = p.GUISubProperties.First(c => c.PropertyType == EPropertyType.Pan);
    pan.ProgrammerValue = 17.4; (Double Wert)


    Tilt entsprechend Identisch.


    EDIT: Noch als Hinweis. p, pan und die anderen Properties kannst du dir merken, so lange die Device Group selektiert ist. Dann musst du nicht jedes mal nach den Properties suchen. In der GUI Session gibt es einen Event "SelectedDeviceGroupChanged", da kannst du dich registrieren und dann wenn der Event feuert deine Referenzen auf null setzen, sodass beim nächsten mal neu gesucht wird.


    Gruß Arne

  • Ok alles klar.


    Welche Werte erwartet ProgrammerValue? Min 0 und Max 100 oder 0-255?

    Wie rechne ich das am Besten vom MidiWert 0-127 um?

  • Programmer Value erwartet den Grad Wert. Also Abhängig davon was das Gerät kann. Wenn du einen größeren / kleineren Wert schreibst, passiert nix, das Gerät läuft halt an die Bande.


    Also Dreisatz rechnen. Du kommst so an die Min / Max Werte.


    Code
    Position lb = (Position)p.LowerBound;
    Position hb = (Position)p.UpperBound;
  • Newly created posts will remain inaccessible for others until approved by a moderator.

    The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.