Mein MIDI-Controller für DMXControl 3

  • Hallo liebes Forum,

    zu erst einmal, vielen vielen vielen Dank für DMXC3 und das tolle Forum hier.

    Zum zweiten, zu meinem Hintergrund:

    Ich heiße Marius und bin 26 Jahre alt. Seit 2011 bin ich für die Lichttechnik am Zunftabend meiner Narrenzunft zuständig. Im ersten Jahr haben wir dafür noch konventionelles Licht, also PARs mit Farbfiltern, Theater Scheinwerfer und Spots. Gesteuert wurde das mit dem MA Lightcommander 24/6. Im darauffolgenden Jahr konnte ich die Technik sebst bestimmen und hab auch den Verleiher gewechselt. Seit da setze ich LED PARs und Moving Lights ein. Gesteuert mit dem grandMA pico.

    Das Pico hat lediglich 5 Executor-Fader und 5 Executor-Buttons. Man hat zwar Faderpages, aber die kann man nur über das Display umschalten. Für schnelle Anpassungen ist das also ungeeignet. Außerdem hat das Pico keine Motorfader, beim umschalten der Page muss man immer den Hardware-Fader auf den gespeicherten Faderwert ziehen, bevor man den Wert ändern kann.

    Mein Vorhaben:

    Seit kurzer Zeit beschäftige ich mich nun mit DMX Software und habe mich für DMXC3 entschieden. Um die Software besser Bedienen zu können möchte ich mir dazu ein MIDI-Controller bauen. Meine Ideen und meinen Fortschritt möchte ich euch hier vorstellen.

    Design und Bedienung:

    Auf dem angehängten Bild habe mal meine erste Designidee dargestellt. Da ich ja vom grandMA komme habe ich mit gerade bei den Executor daran orientiert. Im unteren Bereich sollen links 10 Fader mit je 3 Buttons und rechts 40 Buttons sein (Im ersten Aufbau beschränke ich mich auf 20). Links mitte/oben soll eine Programmier Sektion sein. Die Kreise stehen für Encoder. Diese Sektion orientiert sich an DMXC3. Mit den Encodern Device Group und Device lassen sich die Geräte oder Gruppen durch gehen und durch den Druck auf den Encoder Button ausgewählt. Ähnlich ist die Sektion in der Mitte. Hier sollen mit den Encodern Cuelisten und Cues selektiert werden und mit den Buttons darunter bedient. Rechts davon sind drei Speedmaster geplant, mit Fader und den selben Buttons wie in der Software. Ganz rechts oben ist noch der Grandmaster mit den Buttons für Blackout, Freeze und Blind.

    Zum Schluss sollen noch eine Tastatur und eine Trackballmaus unter einer Abdeckung vorhanden sein, ähnlich wie beim GrandMA2.

    Gerade die Auswahl der Devices und Cuelisten soll durch das Softdeck ergeänzt werden. Sonst sieht man ja nicht was ausgewählt ist.

    Innenleben:

    Die Buttons, Fader und Encoder werden mit einem Arduino abgefragt und über MIDI an die Software übermittelt. Außerdem soll das MIDI-Signal noch an einer MIDI Buchse bereitgestellt werden. So könnte das Pult bei Bedarf vielfältiger eingesetzt werden.

    Das DMX-Interface soll ebenfalls in das Pult eingebaut werden. Als Interface möchte ich da das Nodle U1 ohne Gehäuse verwenden.

    Um nach außen nur ein USB-Anschluss zu haben plane ich ein USB-Hub mit externer Spannungsversorgung einzubauen.

    Nach außen habe ich dann die Anschlüsse für Spannungversorgung, MIDI-OUT, DMX-IN, DMX-OUT, USB.

    Gehäuse:

    Das Gehäuse möchte ich mir selbst aus Holz bauen. Die Deckplatte wird aus Holz oder Alu gemacht, hier bin ich mir noch nicht sicher. Was meint ihr. Also Holz will so etwas nehmen. Für den Boden und die Wänd dicker. Für die Deckplatte 4mm oder 9mm dick.

    Eingabe Hardware:

    Als Taster möchte ich am liebsten die Digitast-Taster einsetzen. Aber mit 2€ pro Stück sind die mir zu teuer. (Wenn ich sie nur für die Executoren einsetze benötige ich 70 Stück = 140€) Daher werde ich Kurzhubtaster mit Kappe benutzen.

    Die Fader haben einen Weg von 60mm. Hier habe ich bei Reichelt die hier gefunden.

    Als Encoder nehme ich die hier.

    Weitere Ideen:

    Natürlich habe ich noch weitere Ideen. Diese gehen aber für den ersten Aufbau zu weit:

    • LAN-USB-Hub, wie hier, einbauen um das Interface über WLAN nutzen zukönnen.

    Fragen:

    • Im Shop gibt es die Nodle Platine mit vormoniertem µC und ohne. Wie empfehlens Wert ist es die vormontierte Version zu kaufen?

    Was haltet ihr von dem Projekt. Ich freue mich auf Ratschläge und Feedback.

    MfG

    Marius

  • nutzer99 October 26, 2019 at 3:20 PM

    Approved the thread.
  • Hallo,

    Ich finde die Idee super.

    Ich habe schon überlegt, mir ein MIDI Controller für den Programmer zu bauen.

    Bei den Encodern müsste man es doch aber auch schaffen, die mit verschiedenen "Modi" zu nutzen, so das man z.b. auch PAN/TILT nutzen kann.

    Vielleicht solltest du noch Platz für ein "Befehls-Numpad" vorsehen, vielleicht kann man das ja mal mit DMXC nutzen. Bei der zweier gabs sowas ja glaube ich.

    Hast du Taster um verschiedene Pages auszuwählen? Dann könnte man auch Motorfader verwenden, das könnten der Arduino und MIDI-Feedback lösen.

    Die Deckplatte fürs Gehäuse könntest du auch in irgendeiner CAD zeichnen, dann kannst du dir die mit CNC anfertigen lassen.

    Da für gibt es Onlinedienste, falls du niemanden der eine CNC hat kennst.

    Für den Rest vom Gehäuse gibt's wahrscheinlich schon Online Pläne.

    Ich habe auch Interesse an so einem Controller, wenns noch andere gibt könnte man ja eine Sammelbestellung für die Gehäuse machen.

    Die digitast sind finde ich auch am besten, wenn man davon viele abnimmt könnte man die vielleicht auch günstiger beim Hersteller bekommen.

    Hast du schon überlegt, anstatt einem Arduino einen Pi zu nehmen? Der könnte auch Netzwerk.

    Wenn man noch einen Mini-PC da rein bekommt, hätte man sogar eine vollständige Konsole.

    MfG

    Nils

  • Freut mich das dir meine Idee gefällt.

    Zu der Kombinutzung: ja das würde gehen, so wie ich das bisher ausprobiert habe müsste man den Arduino so programmieren, dass er nach dem der Button des Encoders gedrückt wurde den Encoder mit anderen Paramtern überträgt. Im DMXC müsste man dann zwei Encoder anlernen.

    Zum Befehlspad: Wie genau meinst du das? Ein Numpad wie am PC? Per USB oder MIDI? Da ich sowieso eine Tastatur mit Numpad einbauen will sehe ich da nicht ganz den Sinn. Vielleicht interpretier ich aber deine Idee auch falsch. DMXC 2 habe ich nie benutzt.

    Zum Pagewechsel: Hatte ich mir überlegt micht aber aus zwei Gründen dagegen entschieden. Ersten sind Motorfader deutlich teurer. Das könnte man zwar auch lösen wie beim grandMA pcio(siehe erster Post), aber bisher fehlt dafür noch das MIDI Feedback.

    Zur Deckplatte: Kannst du mir da einen Service empfehlen? Das ganze Pult soll nicht zu teuer werden, deswegen dachte ich eher an selbst machen mit Dremen und Oszillierer.

    Zu den Digitaster: Eine Sammelbestellung klingt interessant. Auf die schnelle hab ich aber gerade keine Homepage vom Hersteller gefunden. Die Kurzhubtaster will ich verwenden weil die wie die Digitast einen klaren Schaltpunkt haben. Somit hat man auch ein mechanisches Feedback ob der Taster gedrückt wurde.

    Zum Pi: Die Idee hatte ich bisher nicht. Was stellst du dir da vor? Wenn ich dich richtig verstehe denkst du daran die Buttons, Fader und Encoder mit dem Pi auszulesen und die MIDI-Befehle direkt über das Netzwerk zuschicken? Dann wird auf der Empfangsseite aber eine Software benötigt um das auszulesen und die MIDI Schnittstelle bereichtstellt. Mit dem Arduino kann man einfach über die Serielleschnittstelle gehen. Also Arduino->Seriell->Hairless MIDI<->Seriell Bridge->loopMIDI. Alternativ kann man auch wie hier den Chip auf dem Arduino flashen der normalerweise für die Serielleschnittstelle zuständig ist. Damit hat man direkt ein MIDI-Geräte. Die Methode hab ich aber noch nicht probiert. Mach ich morgen mal und melde mich dann.

    Einen Mini-PC einzubauen hab ich auch schon überlegt. Ist mir aber für den ersten Aufbau zuviel Aufwand, da wird ja dann auch noch ein Bildschirm benötigt. Für den Augenblick nehm ich da lieber meinen Laptop.

    Gruß Marius

  • Moin,

    Ich hab was ähnliches vor wie du.

    Ich mach Hobby mäßig das Licht für eine Musikschule. Aktuell experimentiere ich mit eine Teensy 3.6 fader und potis abzufragen und als Midi auszugeben. Als Gehäuse wollte ich ein 19" Case für DJ Pulte nehmen.

    Als Taster will ich Cherry MX Tasten nehmen. Hab mir zum ausprobieren ein 12er Kasten beim großen A-z bestellt ( alle unterschiedliche Ausführung). Die MX Taster werden normalerweise in Tastaturen eingesetzt und gibt es als RGB Version für 1€ das Stück. Ohne led's kosten sie nur 0,6€.

    Die Deckplatte will ich mir lasern lassen

    Wo ich noch am überlegen bin, wie man einen colore-picker sich realisieren lässt.

    Das liegt aber wohl eher daran daß ich erst gerade mit DMX controle angefangen habe.

    Bei einer Sammelbestellung von Taster hätte ich dann auch Interesse.

    Mein Plan ist es das Pult schon mit Motor fader auszustatten um mit verschiedenen Pages zu arbeiten.

    Als DMX Ausgabe will ich von Ullrich Radig ein 4x DMX artnet Interface nutzen. Ich hätte auch schon überlegt einen Lichtrechner mit einzubauen. Denke aber ist aber zu wenig Platz.

    Werde dein Projekt sehr gerne verfolgen.

  • Moin,

    den Teensy hatte ich mir auch überlegt, einen Arduino hatte ich aber noch rumliegen und mit dem funktionierts auch.

    Einen Colorpicker würde ich über ein kleines Touch-LCD-Display realisieren. Der Arduino(oder jeder sonstige µC) stellt dort die Farben dar und verarbeitet die Toucheingabe.

    Beim meinem Pult will ich die Farben über den HSV-Farbraum einstellen. Siehe Wikipedia.

    Bei den Motorfadern sehe ich halt das Problem das es bisher kein MIDI-Feedback gibt. Vielleicht weiß da jemand mehr, ob und wann das reinkkommen soll.

  • Vielleicht weiß da jemand mehr, ob und wann das reinkkommen soll.

    Kurz: Ob: Ja, Wann: Steht noch nicht genau fest

    Lang: Das Problem an Motorfadern ist, dass es da leicht eine Feedbackschleife geben kann. Hierfür wollen wir eine Funktion einbauen, die eine solche Feedbackschleife verhindert. Außerdem können die Motorfader auch blockiert werden. Auch hier wollen wir zur Schonung der Motorfader eine Funktion einbauen, die das erkennt und dann den Motorfader nicht unnötig quält. Bisher waren aber andere Baustellen wie erst einmal generell das Input Assignment zum Fliegen zu bringen wichtiger. Nun kann dieser Stand mit solchen Funktionen weiter verfeinert werden.

    Viele Grüße

    JP

    im Falle eines Falles klebt Gaffa einfach alles, denn Gaffa ist dein Freund und Helfer :thumbup:

  • Hallo Forum,

    hier mal mein erster Zwischenbericht.

    Die meisten Platinen sind mittlerweile fertig, wie im Bild zusehen. Was noch fehlt ist die Platine für die Speedmaster. Hier gab es nähmlich eine Planänderung. Ich werde dafür keine Fader sondern Encoder verwenden. Dadurch wird die Platine kleiner und ich komme mit den Analogeingängen des Due aus, brauche also keinen analogen Multiplexer. Dafür muss ich aber noch die Encoder nachbestellen, weswegen diese Platine noch nicht fertig ist.

    Auf den Platinen zu Device/DeviceGroup- und Cue/CueList-Auswahl sind zwei Buttons dazu gekommen. Ich hatte bei der Bestellung einen Fehler gemacht. Ich wollte die Encoder ALPS STEC12E08(mit Taster) bestellen, stattdessen hab ich die Encoder ALPS STEC12E07(ohne Taster) bestellt. Somit brauchte ich zum selektieren der Devices usw. extra Taster.

    Die Platinen oben rechts beinhalten 15 74HC165-ICs. Sie lesen pro IC 8 digital Signale ein und können über ein Schieberegister ausgelesen werden. Sie stellen insgesamt 120 digitale Inputs bereit. Ich brauche aktuelle zwar nur 101, aber man weiß ja nie. Die Platinen beinhalten auch gleich Pull-Up Widerstände damit ich auf den Eingabeplatinen nur Ground Potential habe. Das einlesen erfolgt über SPI mit 1 MHz. Damit können die 120 Eingänge ca. 50 ns eingelesen werden.

    Was kommt als nächstes?

    Als nächstes werde ich die Verkabelung angehen und die Software zum einlesen der Eingänge schreiben. Mit dieser Software kann ich dann die Platinen testen. Funktioniert alles mache ich mich an das Gehäuse.


    Liebe Grüße

    Marius

  • Ist nicht böse gemeint aber... Die analogen Signale wolltest du multiplexen aber bei den digitalen hast du nicht dran gedacht? Wär mir ehrlich gesagt zu blöd 120 Taster parallel einzulesen

    Maximal 22 ports (das sind 2 deiner hc s) hätten auch 121 Taster bedienen können

  • Mal noch eine Andere Frage, mich interesiert einfach nur für mein Verständnis, fange gerade erst mit der Materie an.

    Bei den Registern braucht man ja je 1 Leitung für das Daten empfangen macht 15 Pins, 1 für die Clock (alle IC´s können ja die selbe Clock empfangen?) macht dann 16 Pins. Braucht man dann nochmals 15 Pins um die Abfrage zu starten der IC´s? Also dann insgesammt 31 Pins um die Ganzen IC´s anzuschließen?

    Ich bin gerade am Überlegen bei meinem Midi-Pult über I²C Board zu gehen oder eine SchalterMatrix aufzubauen. Mit Schieberegistern hatte ich mich bis jetzt noch nicht beschäftigt.

  • Ist nicht böse gemeint aber... Die analogen Signale wolltest du multiplexen aber bei den digitalen hast du nicht dran gedacht? Wär mir ehrlich gesagt zu blöd 120 Taster parallel einzulesen

    Maximal 22 ports (das sind 2 deiner hc s) hätten auch 121 Taster bedienen können

    Ich bin doch nicht böse wegen Kritik. Das ist ja einer der Gründe warum ich mein Projekt hier vorstelle.

    Ich bin mir nicht ganz sicher wie du das mit dem Multiplexen meinst. Meinst du mit einer Tastermatrix? Sowas hatte ich mir auch überlegt, mich aber dagegen entschieden.

    Mal noch eine Andere Frage, mich interesiert einfach nur für mein Verständnis, fange gerade erst mit der Materie an.

    Bei den Registern braucht man ja je 1 Leitung für das Daten empfangen macht 15 Pins, 1 für die Clock (alle IC´s können ja die selbe Clock empfangen?) macht dann 16 Pins. Braucht man dann nochmals 15 Pins um die Abfrage zu starten der IC´s? Also dann insgesammt 31 Pins um die Ganzen IC´s anzuschließen?

    Ich bin gerade am Überlegen bei meinem Midi-Pult über I²C Board zu gehen oder eine SchalterMatrix aufzubauen. Mit Schieberegistern hatte ich mich bis jetzt noch nicht beschäftigt.

    Die Schieberegister der einzelnen ICs kann man in Reihe schalten (siehe seite 14 ->http://www.ti.com/lit/ds/symlink/sn74hc165.pdf). Somit braucht man nur eine Datenleitung. Die Variante die 15 ICs parallel abzufragen hatte ich auch ausprobiert, dabei teilen sich alle die CLK und die LD Leitung. Diese Variante ist aber langsamer als alle in Reihe über SPI einzulesen.

  • Ist nicht böse gemeint aber... Die analogen Signale wolltest du multiplexen aber bei den digitalen hast du nicht dran gedacht? Wär mir ehrlich gesagt zu blöd 120 Taster parallel einzulesen

    Maximal 22 ports (das sind 2 deiner hc s) hätten auch 121 Taster bedienen können

    Ich bin doch nicht böse wegen Kritik. Das ist ja einer der Gründe warum ich mein Projekt hier vorstelle.

    Ich bin mir nicht ganz sicher wie du das mit dem Multiplexen meinst. Meinst du mit einer Tastermatrix? Sowas hatte ich mir auch überlegt, mich aber dagegen entschieden.

    Ja mit einer Taster matrix.... Immerhin betätigst du deinen taster ja nicht im mikrosekunden Bereich bzw will man diese Impulse ja gar nicht.

  • Mal noch eine Andere Frage, mich interesiert einfach nur für mein Verständnis, fange gerade erst mit der Materie an.

    Bei den Registern braucht man ja je 1 Leitung für das Daten empfangen macht 15 Pins, 1 für die Clock (alle IC´s können ja die selbe Clock empfangen?) macht dann 16 Pins. Braucht man dann nochmals 15 Pins um die Abfrage zu starten der IC´s? Also dann insgesammt 31 Pins um die Ganzen IC´s anzuschließen?

    Ich bin gerade am Überlegen bei meinem Midi-Pult über I²C Board zu gehen oder eine SchalterMatrix aufzubauen. Mit Schieberegistern hatte ich mich bis jetzt noch nicht beschäftigt.

    Wenn dus dir bildlich vorstellen willst... Du hast zb 15 Eingänge an deinem schieberegister. Komm nun der erst takt wird zb eine momebtabaufnahme der anliegenden Signale an den Eingängen gemacht. On oder off zb. Bei jedem dem weiteren takt am takeingang werden die Signale (stell sie dir in einer Reihe wie eine Kette vor) bot für bit auf den seriellen Ausgang geschoben. Der Controller gebiert den takt und weiß somit wann der nächste kommt. Bevor er den nächsten takt dann aus gibt liest er das grwerade anliegende Signal vom schieberegister ein. Die Kette wird also seriell und sequentiell vom schieberegister in den Controller geschoben.

    (nebenbei: Ein schieberegister wie dieses kann also auch aus einem parallelen Datenstrom einen seriellen generieren,wurde auch früher öfters genutzt)

  • Ich bin doch nicht böse wegen Kritik. Das ist ja einer der Gründe warum ich mein Projekt hier vorstelle.

    Ich bin mir nicht ganz sicher wie du das mit dem Multiplexen meinst. Meinst du mit einer Tastermatrix? Sowas hatte ich mir auch überlegt, mich aber dagegen entschieden.

    Ja mit einer Taster matrix.... Immerhin betätigst du deinen taster ja nicht im mikrosekunden Bereich bzw will man diese Impulse ja gar nicht.

    Mit den Impulsen gebe ich dir recht. In meinen Tests mit dem IC und den Tastern hatte ich aber keine Probleme mit Schalterprellen. Im Grunde ist es, bezüglich des Prellens, auch egal ob ich die Taster mit den PISO-ICs einlese oder über die Tastermatrix, in beiden Fällen kann es passieren das ich Impulse vom Prellen einlese. Ich habe mich dazu entschieden die Variante mit den ICs zu verwenden, weil diese alle Inputs parallel erfassen. Wenn ich also zwei Buttons gleichzeitig drücke werden diese auch gleichzeitig erfasst und die MIDI-Signale werden möglichst gleichzeitig gesendet. Bei der Matrix werden die Button ja nacheinander, oder seriell, eingelesen. Da kann es passieren dass ich zwei Buttons drücke, die Abfrage am ersten schon vorbei ist aber der zweite noch erfasst wird. Dann gehen die MIDI-Signale in zwei verschiedenen Programmzyklen raus.

    Das einlesen erfolgt über SPI mit 1 MHz. Damit können die 120 Eingänge ca. 50 ns eingelesen werden.

    Damit meinte ich auch nicht dass ich die Buttons alle 50 ns einlesen will. Ich habe lediglich gesagt dass das Einlesen so lange dauert. Ich dachte eher an eine Zykluszeit von ca. 1 ms. Das muss ich aber noch testen.

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