Spielhilfe
Mit der intelligenten Steuerung aus der letzten c't ist es nicht getan: Erst eine Hand voll billiger Käfer, verteilt auf einer übersichtlichen Platine, komplettiert die Tastenabfrage für unser Musik-Workstation-Projekt. Erschrecken Sie nicht über die vielen Schaltbilder auf den nächsten Seiten: Für Ihre Klaviatur kommt nur eine der drei Versionen in Frage.
- Carsten Meyer
Schon im ersten Beitrag sind wir kurz auf die verschiedenen Tastatur-Ausführungen eingegangen. Nun wird es Ernst, denn abhängig von den vorhandenen Tastenkontakten Ihres zweitzuverwertenden Manuals gilt es, unter einer von drei möglichen Scan-Platinen auszuwählen: Für anschlagdynamisch abzufragende „historische“ Umschaltkontakte, nicht dynamische Einschaltkontakte und für eine Tastaturmatrix, wie sie in neueren Geräten zu finden ist.
Wenn Sie den Schaltplan der MIDIvice-Steuerung aufmerksam studiert haben, ahnen Sie vielleicht schon das Prinzip der Tastenabfrage für das Klangcomputer-Manual. Für 61 oder gar 88 Tasten opfert man nicht eine Unzahl von Portleitungen; davon hat der kleine ATmega8-Prozessor ohnehin nicht besonders viel. Die Abfrage der Tastenzustände erfolgt vielmehr seriell über klassische Schieberegister und Zähler. Schließlich kann sich das Firmware-Programm des Mikrocontrollers ohnehin nur um eine einzige Taste gleichzeitig kümmern.
Ein Blick unter die recycelte Klaviatur klärt schnell, um welche Art es sich handelt. Eine Orgeltastatur klassischer Bauart aus den 60er- und 70er-Jahren hat mehrere quer unter der Tastatur verlaufende und durchgehende Drähte oder Metallstäbe, auf die einzelne Kontaktfedern drücken, die so genannten Masse- und Sammelschienen. Letztere „sammelten“ die vom Generator kommenden Töne der gedrückten Tasten und gaben sie an die Klangformung weiter. Erkennt man nur eine einzige Sammelschiene, wies das Instrument bereits eine „elektronische Tastung“ auf, wie sie in den frühen 80ern aufkam. Sind dagegen nur kurze, mehrfach unterbrochene Sammelschienen vorhanden oder die typischen Gummikontakt-Doppelnippel auf einer langen Platine, handelt es sich um eine Matrixtastatur.
Organisch
Am einfachsten und selbst für weniger versierte Bastler zu realisieren ist natürlich eine nicht anschlagdynamische Tastatur (z. B. Orgel), denn hier kommt pro Taste nur ein simpler Einschalter zum Einsatz, der einen Kontakt nach Masse herstellt. Besonderes Augenmerk ist auf die Zuverlässigkeit der Tastenkontakte zu legen; angelaufene Silberkontakte sollten Sie vorher mit einem Silber-Putztuch oder im Tauchbad reinigen. Prellende oder unzuverlässig schaltende Kontakte sind jedem Keyboarder ein Greuel.
Die „OrganScan“ genannte Schaltung für die Abfrage von nicht dynamischen Tastaturen ist denn auch von ausgesuchter Einfachheit. Für jeweils acht Tasten ist ein Schieberegister 4014 mit parallelen Eingängen und seriellem Ausgang zuständig. Auf Befehl vom MIDIvice-Controller übernehmen sämtliche Schieberegister den anliegenden Tastenzustand (Impuls auf der Leitung DataPS), und mit jedem folgenden Taktimpuls auf der SRClk-Leitung purzeln die Tastenbits auf der ShiftOut-Datenleitung einzeln dem Mikrocontroller entgegen. Die jeweils 5 Oktaven umfassenden Platinen lassen sich in Reihe schalten, sodass sich theoretisch bis zu 244 Tasten (in der Praxis: 215) abfragen lassen; die Controller-Firmware sorgt hier für die passende Aufteilung in MIDI-Noten für die verschiedenen Manuale.
Beim Aufbau der OrganScan-Platine sind keinerlei Besonderheiten zu beachten; lediglich die Polung der ICs und der R-Netzwerke verlangt minimale Aufmerksamkeit. Beim Hintereinanderschalten mehrerer Platinen führt der Scan-Ausgang PL04 des obersten Manuals mit einem 10-poligen Flachbandkabel (max. 50 cm lang) direkt zum MIDIvice, der Scan-Eingang PL04a geht zum Scan-Ausgang PL04 des nächsten Manuals und so weiter. Bis zu vier OrganScan-Platinen können auf diese Weise aneinandergehängt werden - ausreichend für drei Manuale und ein Vollpedal.
Auch die Abfrage anschlagdynamischer Tastaturen erfolgt per Schieberegister, nur in umgekehrter Richtung: Auf der „Dyn-Scan“-Platine kommen 74HC164-Schieberegister mit seriellem Eingang und parallelen Ausgängen zum Einsatz, die allerdings anders angesteuert werden wollen. Der MIDIvice-Controller liefert hier ein 0-“Startbit“, das mit jedem Taktimpuls um eine Taste versetzt an den SR-Ausgängen erscheint (negative Logik). Das MIDIvice kann nun anhand des logischen Zustands auf den Ruhe- und Arbeitskontakt-Sammelschienen feststellen, ob die Taste ruhend, unterwegs oder bereits in der Endstellung angekommen ist.
Feste drauf
Damit sich die SR-Ausgänge bei mehreren gleichzeitig gedrückten Tasten nicht in die Wolle kriegen, ist an jedem SR-Ausgangspin eine Entkopplungsdiode vorgesehen. Die Vielzahl von Entkopplungsdioden und deren parasitärer Kapazitäten macht die Schaltung vom Timing her etwas kritischer; mehr als 76 Tasten sollten Sie dem Interface nicht zumuten. Die zwei Ruhe- und Arbeitskontaktsammelschienen (beziehungsweise die gemeinsamen Anschlüsse selbstgebauter Kontakte) werden hier natürlich nicht mit Masse verbunden, sondern mit den entsprechend benannten Pins 15 und 16 an Kontaktleiste PL23.
Enter the Matrix
Den kleinsten Bauteileaufwand benötigt eine Matrixtastatur, dafür verlangt sie etwas mehr Nachdenken beim Austüfteln ihres Aufbaus und der Anschlussbelegung; hier kommt man durch Zerlegen und Aufzeichnen am schnellsten zum Ziel. Zu beachten ist, dass manche Matrixtastaturen nicht mit einer kompletten Matrixreihe beginnen, sondern mit einem „Rest“ der ersten Reihe (z. B. Yamaha). Obwohl sich in der MIDIvice-Firmware auch „krumme“ Spaltenanzahl-Werte einstellen lassen, finden sich in der Praxis durchweg Anordnungen mit 6 oder 8 Spalten.
Der Steueraufwand für die „MatrixScan“-Platine ist etwas höher als bei den beiden anderen: Der Zähler U6a wählt über zwei Multiplexer die Matrixspalten der zur Taste gehörenden Arbeits- und Ruhekontakte aus, sein Zählerstand erhöht sich mit jedem ColumnClk-Impuls. Hat er alle Spalten einer Reihe durchgezählt (eingestellt in den MIDIvice-Defaults), wird er über MxRowClk zurückgesetzt, was gleichzeitig den Reihenzähler inkrementiert und die nächste Reihe auswählt. Den Zustand des ausgewählten Tastenkontaktpaars liefern wiederum die „RuheKont“- und „ArbKont“-Leitungen, die gegebenenfalls invertiert werden können. Die Matrix-MIDIvice-Version reagiert auf eine negative Logik (0 = ein oder beide Tastenschließkontakte gedrückt).
Allen Matrixtastaturen mit Gumminippelplatinen ist gemein, dass sie keine Umschalt-Kontakte besitzen, sondern zwei nacheinander schaltende SchlieĂźer mit jeweils eigenen Entkopplungsdioden. Die im Schaltbild angegebene Jumper-Stellung gilt fĂĽr eine Gumminippelmatrix. Sollten die auf der Tastaturplatine vorhandenen Dioden entgegengesetzt zum Schaltbild gepolt sein (selten), mĂĽssen alle Jumper in die jeweils andere Stellung gesetzt werden. Wird eine Matrixtastatur mit Umschaltkontakten verwendet (ebenso selten), ist nur JP42 in die Stellung 2-3 zu bringen.
Wenn Sie den Aufbau Ihrer Tastatur-Scan-Platine abgeschlossen haben, müssen Sie für einen ersten Test nur den PL04-Stecker mit dem gleichnamigen MIDIvice-Anschluss über ein 10-poligen Flachbandkabel verbinden. Das MIDIvice sollte nach dem „Flashen“ der passenden Firmware zumindest die MIDI-Notenwerte richtig liefern. Die „floatenden“ analogen Eingänge können allerdings noch zu unerwarteten Effekten führen; zum Ausprobieren können Sie die Analogpins 1 bis 4 vom MIDIvice-Steckverbinder PL05 vorübergehend auf Masse legen. Voraussichtlich in der nächsten c't stellen wir Ihnen dann das passende Gegenstück zu PL05 vor, die Analog-I/O-Platine.
Literatur
[1] Carsten Meyer, Spielhilfe, Der c't-Klangcomputer II: Musik-Workstation zum Selbstbau
[2] Carsten Meyer, ZurĂĽck zur Natur, Mit dem Apple II auf Klangfang, c't 12/84, S. 42
|
Steckverbinder-Anschlussbelegungen |
|
|
PL04 OrganScan4014 |
|
| 1 | PB0 SRClk (Schieberegister-Takt) |
| 2 | PB1 DataPS (Schieberegister parallel/seriell) |
| 3 | PB2 (nicht benutzt) |
| 4 | PB3 ShiftOut |
| 5 | PB4 Percussion Out |
| 6 | PB5 (nicht benutzt) |
| 7 | nicht belegt |
| 8 | nicht belegt |
| 9 | +5 V |
| 10 | Gnd/Masse PL04a identisch bis auf Pin 4 = ShiftIn (Daisy-Chain-Eingang von weiteren OrganScan4014-Platinen) |
|
PL30 OrganScan Tasten 1 bis 16 |
|
| 1 | Manual-Taste 1 (tiefstes C) |
| ... | |
| 16 | Manual-Taste 16 |
|
PL31 OrganScan Tasten 17 bis 32 |
|
| 1 | Manual-Taste 17 |
| ... | |
| 16 | Manual-Taste 32 |
|
PL32 OrganScan Tasten 33 bis 48 |
|
| 1 | Manual-Taste 33 |
| ... | |
| 16 | Manual-Taste 48 |
|
PL33 OrganScan Tasten 49 bis 61 |
|
| 1 | Manual-Taste 49 |
| ... | |
| 13 | Manual-Taste 61 (höchstes C bei 5 Okt.) |
| 14 | Chassis-Masse |
| 15 | Chassis-Masse |
| 16 | Sammelschiene Gnd/Masse |
|
Steckverbinder-Anschlussbelegungen |
|
|
PL04 DynScan164 |
|
| 1 | PB0 SRClk (Schieberegister-Takt) |
| 2 | PB1 SRData (Schieberegister-Datenbit) |
| 3 | PB2 Ruhekontakt oder 1.SchlieĂźer |
| 4 | PB3 Arbeitskontakt oder 2.SchlieĂźer |
| 5 | PB4 MxRClk Matrix-Reihen-Takt |
| 6 | PB5 Port B5 (nicht benutzt) |
| 7 | nicht belegt |
| 8 | nicht belegt |
| 9 | +5 V |
| 10 | Gnd |
| PL04a identisch bis auf Pin 2 = SRDataOut (Daisy-Chain-Ausgang zu weiterer MidScan164-Platine) | |
|
PL20 |
|
| 1 | Manual-Taste 1 (tiefstes C) |
| ... | |
| 16 | Manual-Taste 16 |
|
PL21 |
|
| 1 | Manual-Taste 17 |
| ... | &nps; |
| 16 | Manual-Taste 32 |
|
PL22 |
|
| 1 | Manual-Taste 33 |
| ... | |
| 16 | Manual-Taste 48 |
|
PL23 |
|
| 1 | Manual-Taste 49 |
| ... | |
| 13 | Manual-Taste 61 (höchstes C bei 5 Okt.) |
| 14 | Chassis-Masse |
| 15 | Arbeitskontakt-Sammelschiene |
| 16 | Ruhekontakt-Sammelschiene |
|
PL04 MatrixScan816 |
|
| 1 | PB0 ColumnClk (Matrix-Spalten-Takt) |
| 2 | PB1 RowReset (Matrix-Reihen-Reset) |
| 3 | PB2 Ruhekontakt/1.SchlieĂźer |
| 4 | PB3 Arbeitskontakt/2.SchlieĂźer |
| 5 | PB4 MxRowClk Reihen-Takt/Spalten-Reset |
| 6 | PB5 (nicht benutzt) |
| 7 | nicht belegt |
| 8 | nicht belegt |
| 9 | +5 V |
| 10 | Gnd |
|
PL40 Matrix-Spalten |
|
| 1 | Ruhekontakt/1.SchlieĂźer Taste n+0 |
| ... | |
| 8 | Ruhekontakt/1. SchlieĂźer Taste n+7 |
| 9 | Arbeitskontakt/2.SchlieĂźer Taste n+0 |
| ... | |
| 16 | Arbeitskontakt/2. SchlieĂźer Taste n+7 |
|
PL41 Matrix-Reihen |
|
| 1 | 1. Reihe (Tasten 1...6...8) |
| ... | |
| 16 | 16. Reihe |
| StĂĽckliste OrganScan4014 | |
| U1...U8 | HEF4014 DIL |
| C1...C8 | 100n ker. RM 5 mm |
| C9 | 10µ/35V Tantal |
| R1 | 10k |
| R2...R9 | 100k |
| RN1...RN8 | 10k x 8, R-Netzwerk 8fach |
| Sonstiges | Pfostenstecker 10pol. zweireihig (2 StĂĽck) |
| Pfostenstecker 16pol. zweireihig (4 StĂĽck) | |
| Distanzröllchen 5 mm, Montagematerial | |
|
StĂĽckliste DynScan 164 |
|
| U1...U8 | 74HC(T)164 DIL |
| D1...D61 | 1N4148 |
| C1 | 10µ/35V Tantal |
| C2...C6 | 100n ker. RM 5 mm |
| R1,R2 | 1k8 |
| Sonstiges | Platinen-Steckverbinder 2pol. |
| Pfostenstecker 10pol. zweireihig (2 StĂĽck) | |
| Pfostenstecker 16pol. zweireihig (4 StĂĽck) | |
| Distanzröllchen 5 mm, Montagematerial | |
|
StĂĽckliste MatrixScan816 |
|
| U1,U2 | 74HC(T)4051 DIL |
| U3,U4 | HEF4051 DIL |
| U5 | 74HC14 DIL |
| U6 | 74HC(T)4520 oder HEF4520 DIL |
| C1,C2 | 100n ker. RM 5 mm |
| C3 | 10µ/35V Tantal |
| RN1,RN2 | 4k7 x 8, R-Netzwerk 8fach |
| Sonstiges | Pfostenstecker 3pol. einreihig |
| Pfostenstecker 10pol. zweireihig | |
| Pfostenstecker 16pol. zweireihig (2 StĂĽck) | |
| Distanzröllchen 5 mm, Montagematerial | |
(cm)