Viele MIDI-Keyboards sind nicht in der Lage, einen Program-Change-Befehl für den Preset-Wechsel des an geschlossenen MIDI-Expanders zu erzeugen, ohne die eigene Einstellung zu ändern. Außerdem gibt es Unterschiede in der Zählweise der Presets, die je nach Hersteller dezimal oder oktal erfolgen. Der MIDI-Program-Changer löst diese Probleme, indem die Preset-Nummer als maximal 3stellige Dezimalzahl (1 - 128) über eine Tastatur eingegeben und gesendet werden kann.
Einige Keyboards verfügen intern über 128 Presets, von denen aber nur 64 über die eigene Tastatur abgerufen werden können. Auch dieses Problem kann mit dem MIDI-PROGRAM-CHANGER gelöst werden.
ICs:
IC1: 8031-Micro-Controller,12MHz
IC2,IC4: 74HCT373 8-Bit-Latch
IC3: 2764 EPROM
ICS: 74LS00
IC6: CNY-II-Optokoppler
IC7: 7805-Festspannungsregler, 5 Volt
Elkos:
34.7μF/16V
110μF/16V
Keram. Kondensatoren:
222pF
3100nF
Widerstände:
833Ω1/4W
322KΩ1/4W
147KΩ 1/4W
3220Ω 1/4W
1*1 8KΩ 1/4W
Transistoren:
3*BC557B
Dioden:
81N4148
11N4001 o.ä.
S.-LED: z.B. 3*HD1105G gemeins. Anode
Sonstiges:
Der „MIDI-PROGRAM-CHANGER“ besitzt eine MIDI-IN- und -OUT-Schnittstelle und kann dadurch problemlos in ein vorhandenes MIDI Netz eingebunden werden, z.B. zwischen der MIDI-Out-Schnittstelle eines Keyboards und der MIDI-IN-Schnittstelle eines Expanders. Die Tasten „0 - 9“ dienen der Eingabe einer maximal 3stelligen dezimalen Preset-Nummer. Mit der Taste „C“ (Clear) kann eine falsch eingegebene Preset-Num-mer gelöscht und wieder neu eingegeben werden. Die Taste (Enter) dient der Eingabebestätigung und dem Senden der Preset-Nummer an ein angeschlossenes MIDI-Gerät, dabei blinkt die Anzeige kurz auf. Zusätzlich gibt es noch die Möglichkeit, zwei Tasten mit der Bezeichnung „Program-UP“ und „Program-DOWN“ an den Tastenport des 8031 anzuschließen. Sie ermöglichen das schnelle Suchen nach einer bestimmten Preset-Nummer, ohne jedesmal eine neue Preset-Nummer über die Tastatur eingeben zu müssen. Anzumerken sei noch, daß die Preset-Nummern nicht bei „0“ beginnen, sondern von „1-128“ Das gleiche gilt für den MIDI-Kanal, 1-16 statt 0- 15. Bei falschen Eingaben, z.B. „000“ oder „999“ wird eine Error-Meldung angezeigt. Die Anzeige erlischt bei Eingabe einer neuen Preset-Nummer, oder bei Betätigung der „Clear“-Taste. Sollte versehentlich einmal die „Clear“-Taste gedrückt werden, genügt ein Druck auf die „Enter“-Taste, um die alte Programm-Nummer wieder anzuzeigen. Mit dem DIP-Schalter läßt sich der MIDI-Kanal für die Preset-Nummer einstellen.
Der DIP Schalter wird von der Software ständig abgefragt. Dadurch ist es möglich, anstatt des DIP-Schalters auch einen BCD-Drehschaller einzubauen, der es gestattet, während des Betriebs den MIDI-Kanal umzustellen. Ferner besteht auch noch die Möglichkeit, den MIDI-Kanal über den Programmiermodus („Clear“-Taste drücken, festhalten und dann die „Enter“-Taste drücken) einzustellen. Wird der Programmier-Modus aktiviert, erscheint auf der Anzeige „CXX“ (XX = MIDI-Kanal). Die aktuelle Kanaleinstellung wird angezeigt und kann durch eine neue Eingabe geändert werden. Mil der „Enter“-Taste verläßt man den Programmiermodus und es wird die alte Preset-Nummer wieder angezeigt. Der MIDI-Kanal kann jederzeit durch Ändern der DIP-Schallerstellung erneut um programmiert werden, ohne daß der Programmiermodus aufgerufen werden muß. Wenn am MIDI-Eingang des Program-Changers MIDI Daten empfangen werden, leuchtet im 3. Segment der Anzeige als Kontrolle die Punkt-LED auf.
Hauptakteur in dieser Schaltung ist ein 8031-Mikro-Controller, der eifrigen ST-Computer-Lesern wohlbekannt sein sollte (vgl. ST-Computer 5,7/8 und 9/1992), mit einem 2764-EPROM als Programmspeicher und einem Zwischenspeicher für die Adressleitungen A0-A7. Der Mikro-Controller hat u.a. die Aufgaben, die Tastatur und den DIP-Schalter für den MIDI-Kanal abzufragen, die Siebensegment Anzeige anzusteuern und zum anderen die empfangenen MIDI-Daten mit den intern erzeugten Program-Change-Codes zu mischen (mergen) und über MIDI-Out an ein angeschlossenes MIDI-Gerät zu senden. Eine Menge Aufgaben für den 8031-Mikro-Controller, zumal die zur Verfügung stehenden Port-Leitungen für diese Anzahl von Funktionen nicht in ausreichender Anzahl vorhanden sind. Man könnte jetzt überlegen, ob z.B. der 80535 aus der selben Mikro-Controller-Familie für diese Aufgaben nicht besser geeignet wäre, da er doch wesentlich mehr Port-Leitungen zur Verfügung stellt als der 8031-Mikro-Controller. Meine Überlegung war aber, für diese Schaltung einen preiswerten und überall erhältlichen Mikro-Controller einzusetzen, und das ist beim 80535 leider noch nicht der Fall.
Um mit den zur Verfügung stehenden Port-Leitungen des 8031 die vielen Funktionen zu realisieren, bekommt der Tastatur-Port nun mehrere Aufgaben. Zum einen ist er für das Abfragen der Tasten 0 - 9, Clear u. Enter zuständig, zum anderen aber auch für die Abfragen des DIP-Schalters für den MIDI-Kanal, der Prg-UP- u. Prg.-DOWN-Taste und der Multiplexsteuerung der Anzeige. Um dies zu realisieren, wird mit der Port-Leitung P3.7 (Pin 17) des Controllers der Tastatur-Port in seiner Funktion umgeschaltet. Ist diese Port-Leitung logisch I, wird der Sammelanschluß der Tastatur über das Gatter IC5b auf logisch 0 gelegt und die Tasten „0 - 9“, „Enter“ u. „Clear“ können abgefragt werden. Gleichzeitig werden der DIP-Schalter, die Prg.-UP- u. Prg.-Down-Taste und die Treibertransistoren T1 - T3 für die Siebensegment-Anzeige gesperrt. Damit bei Betätigung der Tasten „4 - 6“ die LEDs der Siebensegment-Anzeige nicht auf-leuchten (da die Transistoren beim Betätigen der jeweiligen Tasten leitend werden), wird für den Zeitraum der Tastenabfrage (ca. 40 (isec) der dezimale Wert 255 in das SBit-Register IC4 geschrieben und somit jedes Segment der Anzeige ausgeschaltet. Um nun aber auch den DIP-Schalter, die Prg.-UP/DOWN-Tasten abzufragen und die Siebensegment-Anzeige anzusteuern, muß die Port-Leitung P3.7 (Pin 17) des Controllers auf logisch 0 gesetzt werden. Gleichzeitig wird der Sammelanschluß der Tastatur über IC5b und Diode D1 hochohmig geschaltet und dadurch die Tasten gesperrt. Über die Port-Eingänge für die Tasten „0 - 3“ wird jetzt der DIP-Schalter gelesen, dabei sorgen die Dioden D4 - D7 dafür, daß die DIP-Schalter die Tastatur nicht beeinflussen. Gleiches gilt für die Tasten „7 - 8“, über die jetzt die Tasten „Pgr.-UP“ und „Pgr.-DOWN“ eingelesen werden. Die Port-Leitungen P1.4 - P1.6 des 8031 werden jetzt nicht mehr als Eingänge für die Tasten „4 - 6“ genutzt, sondern als Ausgänge für die Treibertransistoren der Siebensegment-Anzeige. Über die WR-Leitung (Pin 16) des Controllers wird der gemultiplexte Siebensegment-Code in das 8Bit-Register IC4 geschrieben und auf die Anzeige geschaltet.
Der 8031-Mikro-Controller besitzt eine serielle Schnittstelle, die in dieser Schaltung als MIDI-Schnittstelle geschaltet wurde. Über den Optokoppler IC6 gelangen die empfangenen MIDI-Daten an den seriellen Dateneingang des Mikro-Controllers. Intern werden die empfangenen MIDI-Daten evt. mit den zu sendenden Program-Change-Codes gemischt (mergen) und über den seriellen Ausgang des Mikro-Controllers und die beiden Gatter IC5d und IC5c an die MIDI-Out-Schnittstelle gesendet. Für die Tastatur kann man einzelne Tasten oder jedes Tastenfeld verwenden, sofern es nicht als Matrix geschaltet ist. Für die Stromversorgung eignet sich ein handelsübliches 9-12-Volt-Netzteil mit ca. 150mA Ausgangsstrom, da die Schaltung des MIDI PROGRAM-CHANGERs mit einem 5 Volt-Spannungsregler versehen ist. Wenn in der Schaltung ausschließlich CMOS-ICs eingesetzt und anstatt der Siebensegment- eine LCD-Anzeige verwendet wird, kann der MIDI PROGRAM-CHANGER auch über mehrere Stunden mit einer 9Volt-Batterie betrieben werden.
Software-Info:
Die EPROM-Version 4.1 zum MIDI PROGRAM CHANGER kann per Verrechnungsscheck von DM 40 über folgende Anschrift bestellt werden:
Rolf Degen Espenstraße 26 W-5600 Wuppertal 1