Selbstbau MIDI-Pult

  • Hallo zusammen,

    ich mache für eine Kreismusikschule in meiner Region die Lichttechnik. Diese habe ich die ganze Zeit mit QLC+ gesteuert. Da dort in der RGB-Matrix nur die 3 Farben RGB unterstützt werden, habe ich mich dazu entschieden zu DMXControl 3.2 zu wechseln, da hier die HAL RGBx unterstützt wird.

    Warum Selbstbau?

    Ich habe mich dazu entschieden den Midi-Controller selbst zu bauen, da mir kein Controller vom Aufbau hergefallen hat. Beim weiteren suchen hat irgendwann der YouTube Algorithmus ein Selbstbau-Video über ein Pult für GrandMAonPC gezeigt. Dies hat mir gut gefallen und so wollte ich ein Pult mir bauen was vom Layout mir gefällt. Beim weiteren stöbern nach Selbstbaulösungen für MIDI bin ich auf die Videos von Götz Müller-Dürholt gestoßen. Er erklärt sehr gut den Aufbau von MIDI mit einem Arduino.

    Nun war mein Interesse so groß das ich mich weiter mit dem Thema beschäftigt habe.

    Warum Teensy 3.6?

    Er hat entscheidende Vorteile gegenüber einem Normalen Arduino.

    Er ist weitaus schneller (180 MHz statt 16 MHz)

    viele Analoge Eingänge

    Alle Digitalen Pins sind Interrupt-pins

    MIDI-Treiber (er kann direkt als serieller Midi-Input angeschlossen werden)

    Er kann 16x angeschlossen werden mit einem USB Kabel

    für den Teensy gibt es eine MIDI- Library

    Hardware

    Gehäuse

    Als Gehäuse wollte ich ein 19"-Koffer nehmen, wo mal ein 24-Kanal LightOperator eingebaut war.

    Funktionsumfang.

    Layout

    noch nicht angefangen, da hier mir noch zu wenig der Funktionsumfang von DMX-Control 3 bekannt ist.

    Fader

    Bei den Fadern habe ich mich für ALPS Motorfader entschieden (RSA0N11M9-LIN10K).

    Fader sollen im Teensy 2 Stati bekommen, 0 steuernd; 1 gesteuert; dies soll unterscheiden was genau gerade der Fader tut, ob er steuern soll oder ein gesteuerter Fader ist. Das bedeutet der Controller soll nur dann MIDI-Signale ausgeben, wenn er im Status 0 ist, dieser soll aktiviert werden durch die Touchsensitivity des Faders. Sobald ein MIDI Signal von DMXControl kommt soll er in Status 1 gehen und nur seine Position anfahren und keine Ausgabe mehr für diesen Fader Tätigen.

    Kollisionskontrolle: Dies soll so erfolgen, wenn die Position sich in Status 1 nicht verändert oder nur marginal, soll der Motor stehen bleiben und eine Signal-LED soll am Pult Blinken.

    Dreh-Potentiometer

    noch offen, aktuell billige bei A-Z bestellt zum testen

    Tasten

    hier habe ich mir eine Sample-Set von Cherry bestellt (noch auf dem Lieferweg) um mir nach meinem Geschmack den richtigen Taster auszusuchen.

    Ich würde gerne, um den Aktuellen Status des Tasters zu sehen, die RGB Variante von Cherry verbauen.

    Encoder

    noch offen, weiß noch nicht genau für was ich sie in DMXControl verwenden kann.

    Color-Picker

    hier bin ich noch unschlüssig ob ich hier auch RGB-Cherry Tasten einsetze, um 15 Vordefinierte Farben einzustellen oder einen billigen MIDI-Controller ausschlachte

    DMX-Interface

    Aktuell nutze ich einen Enttec USB pro MKI; bin am Überlegen ein ARTnet Interface von Ulrich Radig zu nutzen

    Gehäuse

    Als Gehäuse wollte ich ein 19"-Koffer nehmen, wo mal ein 24-Kanal LightOperator eingebaut war.

    Funktionsumfang.

    Layout

    noch nicht angefangen, da hier mir noch zu wenig der Funktionsumfang von DMX-Control 3 bekannt ist.

    Rechner wo DMXControl drauf läuft

    Aktuell steht mir ein Alter DELL Laptop zu verfügung und ein Surface Pro 2017. Beide sind leider wegen ihrer auflösung des Bildschirms nicht gerade für DMXControl geeignet, hier bin ich noch auf der Suche nach einer lösung.

    Software

    werde ich später nachfolgen; gibt es im Forum eine Möglichkeit eine Programmcode vom rest abzuheben, um über diesen zu Diskutieren?

    Aktueller Stand

    Aktuell habe ich den Teensy soweit programmiert, das Hairless Serial-Midi die Midi Befehle erkennt.

    Nächster Schritt wäre mit dem Prototyp mal QLC+ oder DMXControl 3 zu steuern und den Code auf die MIDI-Library umzuschreiben.

    Aktuell nutze ich eine MDF-Platte um die Dreh-Potentiometer zu halten im 19"-Koffer.

    Bilder hab ich noch keine gemacht, sollen aber folgen.


    Ich bin gerne für Tipps offen

  • Hi,

    das klingt nach einem spannenden Projekt. Bedenke aber bitte, das DMXControl 3.2 aktuell für MIDI noch kein Backtracking (also das Rückmelden des aktuellen Zustandes an das MIDI-Gerät) aus dem Input Assignment heraus unterstützt. Man kann Backtrack zwar im Input Assignment schon anlegen und mit dem Softdesk und dem Streamdek funktioniert es schon und auch der MIDI-Teil an sich kann schon ein rudimentäres Backtracking. Die Verbindung vom Input Assignment zurück zum MIDI-Teil wurde noch nicht implementiert, weil wir unter anderem auch noch eine Kollisionserkennung und eine Feedbackerkennung und -unterdrückung in DMXControl 3 einbauen wollen. Diese dürften dann zusammen mit der MIDI-Backtrack-Funktion implementiert werden.

    Viele Grüße

    JP

  • Moin,

    hab schon einiges gelesen Thema MIDI Backtracking. ich hoffe ihr kommt in der nächsten Version dazu.

    Der Grund warum ich es direkt implementieren möchte ist eine kosten Frage. Wenn ich jetzt die 9 geplanten Fader ohne Motor Kaufe sind es 90€ und wenn ich sie mit Motor Kaufe kosten sie 180€. Ich möchte wenn ich schon ein MIDI-Pult baue es gleich richtig machen. Sonnst habe ich am ende 90€ an Normalen Fader einfach nur herumliegen oder müsste sie verkaufen.


    Gruß

    Max

  • Moin,

    Code ist nun auf die Library umgeschrieben, und ich konnte die MIDI-Anlernfunktion von DMXControl 3.2 nutzen. Hat gut funktioniert.


    Das Bsp. Set der Cherry MX Tasten ist diese Woche angekommen. Ich habe direkt die Taster ausprobiert und nach dem Klangbild getestet. Für mich kommen nur die Roten silent Taster in Frage, diese gibt es auch als RGB fähig. Diese haben dann unten eine kleine Öffnung für eine SMD-LED. Habt ihr eine Idee, außer ein 2. Board wo alles drauf Gelötete wird, wie man die LEDs befestigen könnte, und zu hoffen, dass die Abstände stimmen?


    Ziel der LED für die Taster ist, eine Farbige Unterscheidung der einzelnen Taster Bereiche zu erhalten und welcher Taster am Ende betätigt ist (z.B., wenn er als Schalter innerhalb von DMXControl dient). Interessant wäre auch, wenn ich über Pages die Farben der Taster sich ändern würde, um sie Doppelt zu belegen.


    Für die LED-Farbsteuerung würde ich einen zweiten Arduino nehmen, der die Steuerung von einer möglichen Beleuchtung des MIDI-Controllers umsetzt.

    Ich hatte überlegt einen LED-Streifen in China zu bestellen, mit einem SK6812, WS2812 oder WS2801 Chip zur Ansteuerung der Pixel.


    Da der Teensy nicht genug I/O Pins hat um die ganzen Taster, die mir im Kopf umherschwirren anzuschließen habe ich mich durch das Internet gesucht.

    Beim Googlen habe ich folgende Lösung gefunden:

    MCP23017, das ist ein IC (gibt es auch als Board verlötet) der über die I2C Schnittstelle die Daten sendet. Er Kann den Controller um 16 I/O-Pins erweitern und es können 8 solcher IC`s in Reihe geschaltet werden. Das macht nach Adam Riese 128 I/O-Pins zusätzlich für den Teensy 3.6.


    Gruß

    Max

  • Moin,

    bin weiter mit meiner Konstruktion weiter gekommen.

    Ich habe mich bissel dreist mit dem Funktionsumfang an einem anderen Thread bedient.

    Aktuell bin ich am Überlegen, ob ich noch einen Bereich für Movinglights freimachen kann.

    Oder welche Funktionen ich oben auf den flachen Bereich verschieben kann.


    Für die Auswahl der Pages für die Fader Sektion bin ich am Überlegen, diese aufzuteilen.

    Auf Fader, Buttons und eine Zweite Steuerung der Pages für die Drehpotis (Parametermaster), um andere Funktionen noch drauf legen zu können.

    Ich müsste dann nur noch eine Taste haben zusätzlich, die Seitensteuerung der Drehpotis mit der Fader Sektion wieder Synchronisiert.


    Bei Tipps für die Anordnung wäre ich sehr Dankbar.




    Die Motorfader werde Ich erstmal so nutzen, dass die Fader mit den Pagetastern innerhalb vom Midi-Pult gewechselt werden, so kann ich den Wert, der die Fader schon mal hatten wieder anfahren lassen.


    Mir ist noch eine Frage gekommen, wenn ich einen Multiplexer nutze, der Potis abfragt und ich mit 180MHz den µC laufen lasse, braucht der pro schritt doch ca.6 ns. Beim Multiplexer ist angegeben, das er bei 5V und 25°C nach 15ns schaltet und bei 2V nach 75ns.

    Wenn jetzt der Controller alle Pins für den Multiplexer gesetzt hat und danach direkt die Pins einliest, und der Multiplexer noch nicht geschaltet hat, messe ich dann doch Quatsch? Oder mache ich mir da zu viele gedanken?


    Gruß

    Max

  • Hallo Maxi,

    Ich würde die Buttons für die Faderpages vertikal anordnen und dann links neben den Fader. Damit kommt man besser dran und muss nicht immer über die Fader "drüberlangen" und seine Hand abstützen etc und zweitens hat man so das Prinzip der Ebenen auch visualisiert und macht es für das Hirn etwas logischer. Klingt komisch, ist aber so^^

    Viele Grüße

    Johannes

  • Hi Maxi,

    Das Pult sieht echt nice aus. Die Motorfader und die Anordnung der Lumos/Nox Buttons gefallen mir gut. Die color- und beat-sektion kommt mir irgendwie bekannt vor, sieht gut aus ;)


    Wenn du nen multiplexer benutzt, denk ich dass du da mit 17 ns vollkommen im Rahmen bist.. Ansonsten würd ich da softwareseitig einekleine Pause einbauen bevor du den Wert einliest. Muss ja nicht direkt mit nem eher unschönen delay() sein, sondern mit nem timer.


    In welcher software hast du das Pult designed?

    Und wieso willst du den uC auf 180Mhz laufen lassen?

  • Hi,

    Danke für Eure Rückmeldung.


    Die Page Tasten für die fader hatte ich vorher auch links neben dem Fadern. Leider aus Platzgründen mussten sie nach oben wandern. Links und Rechts außen sind Rack Schienen.


    Konstruiert habe ich in Creo4.0 von PTC.

    Ich muss Mal schauen ob ich auch meine Platinen in Creo konstruieren kann.


    Da ich den Mikro Controller als Ansprechpartner für den PC nutze, wollte ich die Steuerung schnellst möglich machen.


    Ich bin am überlegen ob ich nicht mehrere Mikrocontroller für das Projekt nutze.

    Einen für die Steuerung der LED's und einen für die Steuerung der Motorfader.

    Beide würde ich mit der SPI Schnittstelle ansprechen.

    Der Teensy 3.6 hat genug Pins um die Fader komplett alleine auszulesen und zu steuern. Für die WS2812b LED's würde ich einen arduino nano verwenden.


    Um die ganzen IC's auszulesen und die Daten abzuarbeiten, dachte ich, desto schneller desto besser.

  • Creo sagt mir tatsächlich nichts... Aber wäre es nicht sinnvoll, so etwas wie KiCad zu nehmen? Da hast du ne Platinensoftware (Freeware) inclusive einem 3D-Betrachter, der soweit ich weiß deine ganze PCB als 3D auch exportieren kann (zur weiteren Verarbeitung in anderer Sofware).


    Wenn dir Pins fehlen, würd ich dir zu nem Analogen Multiplexer raten. Ein CD74HC4067 zB hat 16 Eingänge, die du mit 3 digitalen Pins durchschalten kannst :)


    Und wieso ein zweiter uC extra für die Motorfader? Selbst wenn der Teensy deine Motorfader ansteuert, LEDs ausgibt, Analoge Pins einliest, das ganze in Midi ausgibt und dir dazu noch ein Happy Birthday in 8Bit auf nem Summer ausgibt, wird die CPU sich da immernoch arg langweilen ;) 160Mhz sind wirklich verdammt viel! Nur die Programmierung wird natürlich komplexer... Kannst dir ja mal die sloeber-Umgebung anschauen. Die ist wesentlich cooler als die standard Arduino SDK und es lassen sich große Projekte wirklich gut damit lösen.

  • Moin,

    wegen E-Cad muss ich meinen Chef fragen, ob ich auf die Lizens zugriff bekomme. Wenn ja, dann kann ich alles in einem System erstellen.


    Als Analogen Multiplexer wollte ich erstmal den 74HC 151 Multiplexer, 8-CH, 2 ... 6 V nutzen. Da brauche ich 3 pins für die Ansteuerung und 1 Pin für die Datenleitung.

    Aktuell brauche ich 19 Eingänge von 24 geplanten


    Macht es eigentlich einen Unterschied wenn ein IC mit 5V versorgt wird und der Teensy nur 3,3V an den I/O Pins verträgt?

    Der Midi-Controler wollte ich ein Netzteil mit 5V versorgung spendieren, damit nicht alles über die USB-Buchse läuft.


    Für die Digitalpins nehme ich mitlerweile direkt den MCP 23S17-E/SP. Da ich mir die Option auf Interupt noch nicht verbauen wollte und diese auch interne Pull-up wiederstände haben.


    Es ist mein erstes Projekt mit Arduino, ich weiß total overziced.

    Ich werde es erstmal ausprobieren ob es mit dem Teensy klappt,

    der gedanke war, das der Teensy nicht auf die Positionierung der Motorfader warten muss, sondern weiter die Abfragen der Inputs über nehmen kann

  • die Eingänge vom Teensy vertragen nur 3.3V, sodass wenn du deine Potis über 66% aufreißt (3,3V/5V), sich der ADC vermutlich ziemlich schnell verabschieden. Tun sie das nicht, hast du bei 66mm Faderweg schon deine 3,3V am ADC erreicht, sodass alles darüber entweder bei 100% bleibt oder das in komischen Werten resulitert. versorge deine ICs doch mit 3.3V, dann bist du auf der sicheren seite.

    Die Idee mit dem MCP23S17 ist echt schlau! Wusste nicht dass es ICs gibt die einen Interrupt-Pin haben :)

    Es ist mein erstes Projekt mit Arduino, ich weiß total overziced.

    Ach quatsch, daran wächst man doch nur! ;)

  • Hi!


    Du kannst natürlich auch über fiese Widerstandskonstellationen deine 5V auf (mehr oder weniger) 3,3V runterdrosseln. Dann geht das durchaus. So funktionierte z.B. bei einem meiner Projekte man die Spannungsüberwachung von 12V an einem Arduino-Eingang. Ich glaub, dass ich einen Teiler durch 3 eingebaut hatte und so 15V zu 5V wurden und entsprechend runterskaliert.


    Auch wenn es für Analogkanäle nicht geht zur Info:

    Wenn es unbedingt 5V bei Digitalsignalen sein müssen: Such mal unter dem Begriff "Pegelwandler" oder "Logic Level Converter". Damit kann man unterschiedlichen Pegel in Datenleitungen wandeln. Das ist nützlich für z.B. I²C oder SPI Module. Einige Sachen gibts halt wegen dem Ardino eher in 5V-Technik als in 3,3V.


    Hoc

    Mein Equipment:
    1x Hirn | 2x Augen (leicht defekt) |2x Ohren | 1x Mund |32x Zahn (zum Teil V1.5) | 1x Handundfuß-Interface

    *SCNR*

  • Am besten wäre es du überlegst dir erst mal ein richtiges schaltungskonzept...

    Wenn du da rein baust was du willst und nicht was du benötigst is das zwar ein schönes Projekt aber wenns jemand haben will kannst du den preis nicht rechtfertigen

    ..

    Würde alles wenn möglich auf 3,3v laufen lassen wenn möglich. Vorallem die analogen slider

  • Moin zusammen,

    ich muss wohl die Frage, bezüglich der Stromversorgung der IC´s genauer spezifizieren.

    Die Multiplexer schalten bei 3,3V einiges langsamer, als wenn sie mit 5V versorgt werden. Daher kamen die Überlegungen

    • die Multiplexer (74HC 151) mit 5V zu versorgen (hier die Frage, dies sollte doch die durchschleifenden signale nicht beeinträchtigen)
    • die Motoren der Schiebepotentiometer und die Motorsteuerung L293D mit 5V
    • die I/O Expander (MCP 23S17-E/SP) mit 3,3V von einem Stepdown Wandler AMS1117 der fest eingestellt ist, da er an die Eingangspins direkt sendet
    • den Teensy 3.6 mit 5V am Eingang für 3.6V - 6V (beisst sich, dass mit der 5V Versorgung über die USB Anschluss?)
    • die Potentiometer über den Teensy 3.6
    • die Taster und Encoder werden über den Teensy und den I/O Expander

    versorgt.


    Der Teensy kann max. 250mA ausgeben.

    Das Aktuelle Netzteil hat 2,25A, aus jedem AMS1117 kann 1A gezogen werden.


    Gruß

    Max

  • Wenn du an den Teensy von 2 Seiten Spannung anlegst qualmts genauso wie bei nem Arduino.
    Du hast unter dem Teensy 2 Flächen die man trennen kann mit nem Cutter, dann kann man auch so ein USB Kabel anstecken.
    Der 3.6 hat auch den USB an den Pins abgreifbar. Da kann man einfach die +Leitung weg lassen. Oder im Kabel trennen.
    Dann kannst du ihn halt nicht mehr nur über USB Betreiben.
    Weiter würd ich mir den 3.5 überlegen.
    Hat zwar den USB nicht über Pins abgreifbar, ist aber weitesgehend bis auf wenige Ausnahmen 5V Tolerant.
    Grade wenn es dein erstes Arduino Projekt ist, ist ein 3.5 nicht so schnell gehimmelt und man kann auch 5V Fader betreiben.
    In der Geschwindigkeit wirst eh keinen Unterschied bei der Anwendung spühren.
    Und ich muß sagen ich bin zu faul deine Bauteile zu googeln und mir nen reim auf alles zu machen.
    Ich denk so gehts vielen.
    Snapp dir doch ein Program und bring was zu Papier. Ist ja auch für deine eigene Übersicht mehr als nützlich.

  • Aktuell bin ich mit dem Teensy 3.6 am Testen und ausprobieren wie ich den Multiplexer am besten ansteuere, wie auch die Motorfader und auch die MCP 23S17-E/SP.

    Wenn ich weiß wie ich das ganze Programmtechnisch umsetzte, gehe ich an die Planung der Schaltpläne.

    Zu dem Thema, zwei Spannungsquellen, werde ich die Lösung mit einem extra USB-Kabel wie Falko beschrieben hat nehmen.

    Da ich mir überlegt hatte, am Anschlussterminals des Midi Pultes eine USB-Buchse von Neutrik zu verbauen, kann ich da einfach eine Modifiziertes USB-Kabel Anschließen wo nur Ground und Data +, wie auch Data - am Teensy angeschlossen werden.

    Hätte ich die Rückseite des PIN-Belegungsplan besser gelesen, hätte ich mir die Frage selbst beantworten können.


    Falko

    Daher weiß ich nicht was du meinst, was ich zu Papier bringen soll?

    Was bedeutet Snappen?

    Ich bin dir Dankbar, für den Hinweis mit den 2 Spannungsquellen, aber wenn du nicht bereit bist, dich mit den Bauteilen auseinander zusetzten, sind deine Infos, zu konkreten Lösungen leider nicht relevant für meine Entwicklung des Midi-Controllers. Denn nur mit Berücksichtigung der verwendeten Komponenten kann man sinvolle Kritik geben. Tut mir leid dies so schreiben zu müssen.


    Eddy

    Das Projekt ist für mich und nicht für den Verkauf bestimmt. Es dient mir, die Materie der Elektro-Konstruktion näher zu bringen und sie zu verstehen. Ich gehe davon aus, das am Ende Teile Übrigbleiben, die ich doch nicht mehr am Ende verbaut habe. Bei einem Projekt wo 200€ alleine für Taster und Potentiometer draufgehen, genauso eben so viel nochmal für das Gehäuse, fallen paar IC´s nicht ins Gewicht die man am Ende doch nicht brauch.

     

    @All

    Meine Frage war, ob es einen Unterschied macht bei der Stromversorgung der IC´s mit 5V und der Verträglichkeit der I/O-Pins am Teensy.

    Nach euren Gedanken Gängen und weiterem googlen bin ich zum Schluss gekommen, dass es grundsätzlich Funktioniert. Man darf nur kein I/C mit 5v versorgen was Daten zum Teensy schickt und man muss dabei noch kontrollieren ob die Interne Schaltung der IC´s, wenn sie mit 5V läuft die schwächeren Signale des Teensy mit 3,3V auch versteht. Rückblickend wäre es wohl sinnvoller gewesen den Teensy 3.5 zu nehmen da er, wie Falko schrieb, 5V verträgt.


    Gruß

    Max


  • Snapp heißt schnapp.
    Tastatur kaputt.
    Wenn du nach infos fragst dann sag nicht das meine Infos leider nutzlos sind, und Bestätige aber daß jede beachtet wird oder richtig gewesen wäre.
    Bei deiner Entwicklung will ich hier gar nicht relevant beteiligen keine Angst.
    Hilfe ist Hilfe. Ob dich jemand bis zum Fertigen Projekt trägt oder nur bis zum nächsten Datenblatt.


  • So, mal ein Update


    Nach ewigen experimentieren ist mir aufgefallen, dass der Multiplexer, den ich mir ausgesucht habe, nur in eine Richtung funktioniert. Nun habe ich mich für den 74HC 4051 Multi-/Demultiplexer entschieden.


    Eine weitere Planänderung ist, dass ich statt Drehpotentiometer im Fader-Bereich Dreh-Encoder verwenden möchte. Das hat den Hintergrund, wenn ich die Pages wechsele, ist nicht ein alter Wert noch eingestellt.

    Habt ihr eine Idee, mit welcher Methode ich 15 Dreh-Encoder am besten abfragen kann?


    Es gab mal Segmentanzeigen für Drehencoder bzw. Potentiometer. Leider werden die nicht mehr vertrieben. Dann habe ich auf verdacht mir WS2812 2020 LED Chips bestellt. In der Vorstellung dachte ich, die bekomme ich bestimmt verlötet, nun sind sie hier und denke mir, F**K sind die klein.


    Habt ihr einen Tipp, wie man diese Verlöten kann?


    Als weiteres habe ich mich für den Logic Level Converter TXS0108E, dies ist ein Bidirektionaler Pegelwandler, diesen werde ich benutzen für alles außer der Abfrage von Potentiometer, Damit ist das 5V-Problem gelöst.


    Gruß

    Max

  • Die 2020 wirst du denke ich nur verlöten können, so wie sie gedacht sind.
    Platinen machen lassen und mit Lötpaste und am besten am besten mit Stencil verlöten.
    Wird mit dem Kolben halt grenzwertig denke ich.
    Besser reflow. Weiß aber nicht wie wärmeempfindlich die sind und obs mit ner Heißluft Station geht.

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