Midi-Plugin

  • I proudly present: Midi-Plugin für DMXC-3
    Da mich der fehlende Midi-Support von DMXC3 etwas gestört hat, habe ich mal ILSpy und Visual Studio ausgepackt und habe mir ein kleines Midi-Plugin geschrieben. Es unterstützt im Moment Buttons und Encoder/Fader inklusive Backtrack


    Kurz zur Funktionsweise:
    Da man nicht immer weiß welche Midi-Devices an welchem Rechner sind und in welcher Reihenfolge, habe ich mich entschlossen die Geräte vom Midi-Mapping zu trennen. Man kann (theoretisch) unendlich viele Mappings anlegen, und diese bei Bedarf an Midi-Geräte koppeln. Jedes Mapping besteht aus sog. Regeln, diese sind dann pro Steuerelement verschieden (Buttons / Encoder / Fader / Touchpad etc).
    Für jedes Mapping wird ein InputLayer im InputAssignment registriert, für jede Regel ein InputChannel im Betreffenen InputLayer.


    Kleines Tutorial:
    1. Installation


    Version 0.5.3 findet ihr auf Github - Installationshinweise


    2. Einrichten
    Das MidiManager Fenster findet ihr unter dem Menüpunkt "Settings", öffnet es jetzt.
    Im oberen Teil werden alle Midi-Geräte angezeigt, die an den Computer angeschlossen sind.
    Diese werden bei jedem Start aufgelistet. Wichtig ist hier nur die Spalte DeviceId, die werden wir später brauchen.
    Im unteren Teil könnt seht ihr eure Mappings. Klickt nun in den unteren Teil und drückt F5. Jetzt habt ihr ein neues
    Mapping angelegt. Im InputAssignment seht ihr jetzt den neuen InputLayer mit dem Namen des Mappings.


    3. Midi-Geräte verbinden
    Falls ihr noch keine Midi-Controller angeschlossen habt, geht zu Schritt 4.
    In der Mapping-Zeile seht ihr jetzt 2 Spalten für InputDeviceId und OutputDeviceId.
    Dort tragt ihr jetzt die DeviceId aus der oberen Hälfte ein. Wenn ihr alles richtig gemacht habt, sollte,
    wenn ihr das Bearbeiten beendet, die DeviceId von eurem Device dort stehen. Falls das Feld leer bleibt, wurde kein
    passendes Gerät gefunden.


    4. Regeln einrichten
    Doppelklickt jetzt die Mapping-Zeile, dann sollte sich ein Bearbeitungsfenster öffnen.
    Klickt auf Rules -> New. Dort seht ihr alle verfügbaren Steuerungstypen.
    Wir legen jetzt einen Button an, also klickt auf ButtonRule.
    Jetzt sollte sich links ein Eintrag angelegt haben, klickt drauf.
    Dann könnt ihr rechts die Eigenschaften von diesem Eintrag bearbeiten.
    Legt UseBacktrack auf True und IsToggle auf False fest.
    Danach klickt oben auf "Begin learn". In der Eigenschaft "LearnStatus" gibt euch die Regel
    Hinweise, wie der Anlernvorgang durchzuführen ist.
    HINWEIS: BeginLearn funktioniert nur, wenn ihr dem Mapping ein InputDevice zugewiesen habt.
    Pro angelegter Regel wird unter dem InputLayer ein InputChannel angelegt.


    Das war es im Groben eigentlich schon.
    Feedback, Bugreports, Wünsche, Kritik, Hilfe sind immer gern gesehen.


    LG Martin


  • Ja das ist richtig, wenn du mir noch zeigst, wie ich einen Encoder toggeln kann, dann bau ich das ein :D, nein im Ernst, das macht keinen Sinn.
    Der Lernmode für Encoder funktioniert bei mir, kannst du da mal dein Projekt anhängen?


    Zuweisung geschieht im Input Assignment

  • Hallo Martin,


    benutze gerade Dein Midi-Plugin unter Beta 6.
    Dabei werden die RuleSets nicht im Projekt gesichert, d.h. nach jedem Neustart von DMXControl 3 sind alle RuleSets weg.
    Buttons funktionieren, aber es gelingt mir nicht, einen Encoder, der (soweit ich das beurteilen kann) richtig "lernt" und den ich im InputAssignment einem Dimmer zugewiesen habe, zum funktionieren zu bringen.


    Vielen Dank für Deine Hilfe,
    Thomas

  • Hallo Martin,

    die RuleSets sollte gespeichert werden. Ich schau es mir mal an.

    die Datei MidiSettings.xml sieht bei mir so aus:


    <?xml version="1.0"?>
    -<ManagedTreeData Version="1"> <TreeItem Name="MidiSettings"/> </ManagedTreeData>


    Welche Tags müssten hinein, um ein RuleSet und die entspr. Buttons, Encoder abzubilden?

    Wenn du einen Encoder benutzt: hast du den Increment-Wert gesetzt, ohne (Standard = 0) verändert der encoder den Wert nicht...

    Wenn ich den Increment setze (z.B. auf den Wert 2), dann verhält sich der Encoder bei mir wie ein Schalter, d.h. wenn z.B. ein Slider auf eine bestimmte Position gezogen wird, springt der DMX Ausgabewert von 0 direkt auf 255.
    Ich denke aber nach wie vor, dass der Encoder "richtig" lernt (siehe Anhang encoder.jpg).
    Vielleicht liegt es ja auch an meinem Omnitronic FAD-9, aber unter DMXControl 2 funktioniert er einwandfrei mit dem gleichen Midi-Treiber.


    Vielen Dank für Deine Mühe,
    Thomas

  • Hallo Thomas,


    habe hier schon etwas länger nicht mehr reingeguckt, sorry.


    Das bei dir das nicht funktioniert ist klar (denke ich), denn du versuchst einen Slider auf einen Encoder anzulernen.
    Ich werde für das nächste Update eine Slidercontrol einbauen.



    Edit:


    Speichern des Projekts mit den Regeln drin funktioniert bei mir, kann das deshalb leider nicht nachvollziehen, ich werde mal Logging einbauen


    LG Martin

  • Hallo,


    Slider gibt es schon hier bei mir, aber ich will für das nächste Release gerne den Speicherbug fixen, mittlerweile hab ich ihn gefunden.
    Wie man das fixt - noch keine Ahnung, wird wohl noch eine Weile dauern, ich schätze mindestens 1 Woche


    EDIT: Gefunden - kopiert bitte mal Testweise die MidiPlugin.dll in das Serververzeichnis also DMXControl3.0\Kernel\
    Wenn es dann funktioniert nehme ich das in die Installationsanleitung mit auf.


    Zur Stabilität kann ich nix sagen, meiner Erfahrung nach - wenns einmal läuft dann läufts, aber grade das Anlernen der geräte birgt noch Fallstricke


    Martin.

  • Hallo,
    Du schreibst:

    EDIT: Gefunden - kopiert bitte mal Testweise die MidiPlugin.dll in das Serververzeichnis also DMXControl3.0\Kernel\
    Wenn es dann funktioniert nehme ich das in die Installationsanleitung mit auf.

    noch habe ich gar nix geändert, ich arbeite noch an der Stabilität...

    Wie bzw. was soll man das dann testen ?
    Oder verstehe ich Dich da falsch ?


    Gruß Steff

    Am Ende wird alles gut !

    Wenn es nicht gut wird, dann ist es noch nicht das Ende.

    May the light with you

  • Einfach mal die nehmen die im obersten Post angehängt ist und ins Serververzeichnis UND ins Pluginverzeichnes des Clients packen.



    Hintergrund:
    Das hat soweit ich das testen konnte was damit zu tun wo der der das Projekt speichert und da die Midi Settings projektweise gespeichert werden, nutze ich das Resourcensystem das mit DMXC mitkommt und das schickt das Zeug wohl erst irgendwie zum Server hab ich das Gefühl, kann es aber mangels Sourcen für DMXC nicht weiter debuggen.


    Edit:
    Habe oben mal die aktuellste drangehängt. Vielleicht packe ich das ding mal auf ein SVN/Git/TFS/sonstewas, dann können die interessierten Leute mal mitlesen was ich da verbrochen habe.

  • Es gibt jetzt fader in der v 0.2


    Bitte mal testen!


    PS: Vielleicht könnte mir jemand ein Gerät zum Testen mit vielen Reglern zur Verfügung zu stellen ?? Wäre super, dann kann ich bestimmt auch noch mehr Bugs finden und fixen und vor allem auch testen.
    Wer mag - bitte per PN an mich.

  • Hallo,
    habe gerade bei mir ein Problem festgestellt:
    ich verwende ein BCF2000,
    erstes Test-Eimpflegen hat auch geklappt.
    Aber (egal ob einer Funktion zugewiesen oder nicht): sobald ich einen fader habe und der den wert 0 erreicht stürzt die GUI von DMXC3 ab.


    Mein Fehler? Bug?


    Viele Grüße
    Florian

  • 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.