MIDI-Pult

Erstellt am 24.11.2013

Den Rechner per MIDI steuern

Für unsere Lichtanlage setzen meine Kollegen und ich schon lange die Software DMXControl ein, mit der man die ganzen Dimmer, Switche, Scanner und LED-Pars bequem steuern kann. Auch die Lichtorgel mit den Lightbars wird darüber mit einem DMX-Adapter betrieben. Bisher erfolgte die Steuerung der Effekte mit der Maus, oder etwas bequemer über ein Touchscreen mit der Kommandobox. Aber das alles war immer etwas hakelig. Der Touchscreen hat bei schnellen Klicks schon mal etwas verschluckt, oder dachte ich will das Fenster verschieben - sprich der Effekt blieb an. Auch die Geschwindigkeitsregelung musste einzeln mit der Maus erledigt werden.

Was wir brauchten war eine Abbildung der Software in Hardware: also Knöpfe mit denen man Effekte ein- und ausschalten kann und Regler mit denen man die Slider der Software bedienen kann. Ein wenig Recherche brachte uns auf die MIDI-Fernsteuerungs-Funktion. Darüber wird auch gängige DJ-Software gesteuert. Da MIDI ursprünglich zur Übtragung von z.B. einem Keyboard auf einen Computer entstanden ist, werden darüber letztlich Noten übertragen.
Und zwar immer drei Byte:

  1. Byte: Note ein/aus auf MIDI-Kanal X
  2. Byte: Note (z.B. C2)
  3. Byte: Anschlagstärke 0 - 127

Damit lassen sich also Informationen in den Rechner einspeisen. Aber wie sieht denn die Hardware nun genau aus?

Hardware von uCApps.de

Auf der Seite von uCApps gibt es ein Projekt, das genau diese Aufgabe übernimmt. Taster und Schieberegler einlesen und als MIDI-Protokoll ausgewertet an den Rechner schicken. Es gibt dabei einen Haufen Module. Vom einfachen Digital-IN oder -OUT über Analog-IN hin zu Modulen für Analog-OUT, Motorfadern oder sogar Module zum Beschreiben von SD-Karten. Auch gibt es inzwischen eine Reihe von Core-Modulen - dem Gehirn der ganzen Hardware. Ursprünglich angefangen hat das Projekt bei einem einfachen 40 Pin PIC-Controller und ist inzwischen bei einem ARM Cortex-M4F oder einem NXP Cortex-M3 mit USB- und Netzwerk-Schnittstelle.

Für unsere einfachen Anforderungen haben wir uns jedoch für das einfachste Modul mit dem PIC-Prozessor sowie je einem DIN-X4, DOUT-X4 und AIN-X4 Modul entschieden. Damit können wir jetzt theoretisch 32 Buttons, 32 LEDs und 32 Schieberegler einlesen. Die Hauptplatine hat außerdem noch einen Anschluss für ein 2x16-Zeichen-Display.

Für den Anfang haben wir in ein altes externes SCSI-Gehäuse 32 Taster, 20 LEDs und 10 Schieberegler gesteckt. Das sieht dann so aus:

Bohren und sägen Pult Rückseite
Löten der Schalter, LEDs und Schieberegler Fertiges MIDI-Pult

Da ich keine professionelle Fräse in meinem Werkzeugsortiment habe, wurden die Schlitze für die Schieberegler zunächst mit einer Flex soweit vorbereitet, dass ich den Rest mit einer Feile erledigen konnte. Zuvor hatte ich ein Layout am Rechner erstellt und auf die Rückseite als Bohrschablone geklebt. Damit wurden die Löcher einigermaßen gerade. Sehr viel Löt- und Bastelarbeit später bekommt man das Ergebnis auf dem letzten Bild. Die Platine auf dem Bild davor enthält die drei Module für DIN, DOUT und AIN. Auf einer weiteren selber geätzten Platine befindet sich der PIC-Controller, welcher die Perepherie ansteuert.

Fehlt noch der Anschluss an den Computer. Viele Nutzer verwenden dafür einen USB-zu-MIDI-Adapter. Aber da wir noch einen echten PC zum Steuern der Lichtanlage verwenden, lag es eigentlich nahe, einfach den MIDI-Port im Gameport einer Soundkarte zu verwenden. Das bringt einen Vorteil mit (zumindest finde ich, dass es einer ist): Die Soundkarte sendet bereits TTL-Pegel aus dem Gameport. Das bedeutet man kann die Leitungen aus dem Gameport direkt mit den RX/TX-Leitungen des PIC verbinden und kann sich den ganzen Overhead mit Optokoppler sparen.

Software zum Pult

Damit das Core-Modul auch etwas machen kann, benötigt es natürlich eine Firmware. Die Macher von uCApps haben dabei geniale Arbeit geleistet! Zunächst muss man sich einen PIC-Prozessor mit dem absoluten Basis-System besorgen. Den kann man entweder in diversen Shops bei uCApps für ein paar Dollar bekommen, oder natürlich selber mit einem PIC-Burner brennen. Das haben wir dann auch gemacht. Ist diese minimale Firmware gebrannt, kann man den Chip bereits auf die Core-Platine stecken und mit dem Computer verbinden. Denn ab jetzt geht alles über die MIDI-Schnittstelle. Mit dem Programm MIOS-Studio kann man das sog. MIOS (MIDI-Operating-System) auf den PIC laden. Dabei werden die aus der Mikrocontroller-Programmierung bekannten hex-Files in MIOS-Studio geladen und über die MIDI-Schnittstelle im Flash des PIC abgelegt. Ist MIOS also auf den PIC geladen, können als letzter Schritt noch die Applications übertragen werden. Das ist der Teil, bei dem man erstmalig mit ein wenig Programmieren und Kompilieren in Berührung kommt.

Auf der Projektseite finden sich eine Menge Beispiele, darunter auch eines, das die DIN/DOUT/AIN-Module ausließt bzw. ansteuert. Im Header-File gibt man eine minimale Konfiguration vor (wie viele Shift-Register angeschlossen sind und wie viele Schieberegler man auswerten möchte). Dann wird das ganze kompiliert und die App übertragen. Jetzt sendet bereits jeder Knopfdruck ein MIDI-Event.
Da bei mir die Knöpfe und die LEDs nicht der gleichen Note entsprechen, musste ich noch ein kleines Mapping programmieren. Das heißt, wenn ich z.B. den Taster unten links gedrückt habe, entsprach das dem Schalter Nummer 23, allerdings der LED 1. Über ein Array wird jetzt, wenn die Note 23 empfangen wird, die LED 1 angesteuert. Damit leuchtet jetzt immer zum richtigen Schalter die richtige LED.

Als letztes kann man sich jetzt sein DMXControl über die MIDILearn-Funktion einrichten. Das Schöne ist, dass DMXControl auch immer die Note zu entsprechendem Taster sendet, wenn man eine Funktion auslöst. Das bedeutet, auch wenn ich einen Effekt per Maus starte, wird die LED am MIDI-Pult aktiviert. Man hat also immer den Überblick, welche Effekte gerade aktiviert sind. Mit Motorfadern wäre das sogar für die Schieberegler möglich.

Seitenanfang