MA Key
Die MA Key sind ein Projekt was aus Verzweiflung entstanden ist. Ich hatte aus einen gestorbenen Projekt eine billige Kassentastatur (ca. 90 Euro) liegen. Bezüglich billig gibt es einige Sprichwörter. Wer billig kauft, kauft zwei Mal. Was nicht kostet taugt auch nichts. Genau dieses triff auch auf die vorhandene 111 Tasten Tastatur zu. Nachdem das Projekt eingestellt war, lag die Tastatur hier ein Jahr im Schrank. Die nächste Idee, welche ich hatte, war die Tastatur zum Programmieren zu benutzen. Auf einige der Tasten wollte ich Makros legen, um bestimmte Quelltextblöcke generieren zu lassen. Dieses scheiterte aber leider an den taiwanischen Treiber und Konfigurationssoftware. Diese ließ sich auch leider nicht mit Kopfstand dazu bewegen einige „ALT-GR“ Kombinationen der deutschen Tastatur anzunehmen. Anschließend verbrachte die Tastatur wieder einige Zeit im Schrank.
Durch meinen Shapeoko kannte ich bereits die Arduino Plattform. Ich hatte auch vor kurzen an einen Türöffner mit RFID und einen Arduino NANO gearbeitet. Dieses war so problemlos, dass ich mich entschieden habe, einen Arduino MEGA zu kaufen. Dieser sollte als neuer Treiberchip in der Kassentastatur arbeiten. So hatte ich die Möglichkeit eine eigene Firmware zu schreiben, welche meine Anforderungen erfüllt. Die Idee war, die Tastatur als MIDI-Instrument umzubauen und diese mit einer Lichtsteuersoftware zu nutzen.
Die Schritte waren einfach: Zuerst den alten Controller entfernen. Dann den MEGA einsetzten und einen kleiner Adapter für die Verbindung der Tastenmatrix löten. Dabei ist mir aufgefallen, dass die Tastatur eine 8*16 Matrix ist und eigentlich 128 Tasten unterstützt. Wie auf dem Foto zu sehen, gab es auch eine Spalte von Tasten, welche nicht durch den Hersteller eingesetzt worden waren. Daraufhin habe ich mit einige Cherry MX1A11NW Tasten bestellt, um diese dann an den leeren Stellen einzusetzen. Damit kein „ghosting“ (http://pcbheaven.com/wikipages/How_Key_Matrices_Works/) auftritt, wenn mehrere Tasten gleichzeitig gedrückt werden, hat der Hersteller Dioden eingesetzt. Diese habe ich ebenfalls nachgerüstet – allerdings diese mal von der Unterseite der Platine. Das ging leider nicht anders, da die Tasten von oben in einen Halterahme gedrückt werden und dann von unten verlötet werden. Ich hätte also alle Tasten auslöten müssen, um die Dioden von der Oberseite zu verlöten. Somit war die Hardware fertig und ich musste anschließend mir nur noch mein gewünschtes Tastenlayout zusammen Puzzeln.
Der Softwareteil war etwas anspruchsvoller. Der Plan war es die Tastatur ohne eigene Treiber als Midi Gerät zu verwenden. Dazu war es erforderlich auf den Atmel 8u2, welcher die USB Kommunikation übernimmt, eine andere Firmware zu installieren. Wie es immer so ist, aus einen anderen Projekt hatte ich noch einen Atmel JTag-Ice MK2 liegen. Dieser ist ein idealer „in circut programmer“ oder kurz „ISP“. Das Projekt „HIDUINO“ hat sich genau mit so etwas beschäftig und diente als Grundlage. Das Projekt ist unter http://code.google.com/p/hiduino/w/list zu finden. Nach dem kompilieren der Firmware konnte ich diese ohne Probleme mit dem AVR Studio 6 auf den 8u2 bringen. Ein kurzer Test meldete den Controller an Windows als Midi-Gerät an und Windows installierte einen Standardtreiber. Jetzt brauchte ich nur noch die Tastaturmatrix abzufragen und in Midi-Noten umzuwandeln. Auch hier hatte ich Glück mit der Arduino-Plattform. Dort gibt es zum einen die MIDI Library (http://github.com/FortySevenEffects/arduino_midi_library/) und zum anderen eine Bibliothek „Keypad Library“ (http://playground.arduino.cc/Code/Keypad). Diese dient zum Abfragen einer Tastenmatrix. Diese enthielt aber mehrere Unschönheiten. Zum einen unterstützte sie nur 10 gleichzeitig gedrückte Tasten – ich wollte 128. Zum anderen hat die Bibliothek die Tasten immer sofort in ASCII Zeichen umgewandelt. Ich wollte lieber einen Scancode der Taste haben. Des Weiteren enthielt die Bibliothek noch einen Fehler, welcher die zuletzt gedrückte Taste wiederholte, sobald eine Taste mit einem höheren Scancode zusätzlich gedrückt wurde. Somit blieb mir nicht anderes übrige diese in C++ geschrieben Quelltext auf meine Bedürfnisse anzupassen. Anschließend brauche ich nur beide Bibliotheken zu kombinieren. Wenn eine Taste gedrückt wurden, dann schicke ein „Note On“, wenn eine Taste los gelassen wird, dann schicke ein „Note Off“. Dieses war schnell mit ca. 50 Zeilen Quelltext geschafft. Verglichen mit der Anpassungsarbeit an der „Keypad Library“, da ich kein C++ beherrsche, war das kein Problem. Nachdem ich fertig war, brauchte ich das Projekt nur zu übersetzen und ebenfalls mit dem ISP (aber nun) auf den Atmel MEGA zu kopieren.
In der genutzten Lichtsoftware (GrandMA 2 onPC) brauchte ich dann nur noch das Mapping der Midi-Noten zu den Hardkeys machen und schon war ich stolzer Besitzer meiner MA-Key. Diese konnte ich auch vor kurzen bei einer Veranstaltung live ausprobieren.