MIDIbug

Selbst Profi-Musiker erleben mit ihrem MIDI-Setup bisweilen Haarsträubendes: Was gestern im Probenraum noch anstandslos funktionierte, zickt im Rampen-licht und droht den Auftritt zu verderben. Die Fehlersuche gestaltet sich einfacher, wenn man einen MIDI-Hardware-Debugger wie unseren MIDIbug dabei hat.

vorlesen Druckansicht
Lesezeit: 13 Min.
Von
  • Carsten Meyer
Inhaltsverzeichnis

Asche auf die Häupter jenes Gremiums, das Anfang der Achtziger eine Steckverbindung aus dem Holozän der Audiotechnik als Schnittstellenstecker definierte: Auch knapp 25 Jahre nach Einführung sorgt der mit heißer Nadel gestrickte MIDI-Standard immer noch für Kopfschütteln, wenn etwas nicht so funktioniert wie angedacht. Doch nicht immer sind Fehler so offensichtlich wie angenagte Kabel, die im Probenkeller einer Mäusekolonie als Zeitvertreib dienten.

Leider sieht man dem Stecker ja nicht an, welche und ob überhaupt Daten beim Empfänger ankommen. Um die anfälligen Kabel und Steckverbinder als Fehlerquelle auszuschließen, hat jeder bessere Roadie eine DIN-Kupplung mit eingelöteter Leuchtdiode (Anode an Pin 4, Kathode an Pin 5) dabei - die blitzt auf, wenn am Kabelende Daten eintreffen.

Schwieriger wird es allerdings, wenn ein falsch eingestellter Kanal oder gar ein Gerätedefekt die Kommunikation vereiteln. Bei der Komplexität moderner Instrumente verlaufen sich nicht nur vergeistigte Konzertpianisten gern mal in den Tiefen der Menüstruktur, gegen die man die Timer-Programmierung eines frühen Fernost-Videorecorders geradezu intuitiv nennen kann.

Hilfreich ist in jedem Fall ein MIDI-Monitor, also beispielsweise ein PC-Programm, das die MIDI-Kommunikation entschlĂĽsselt und ĂĽbersichtlich auflistet. Ein ganz hervorragender und noch dazu kostenloser Vertreter dieser Zunft ist das universelle MIDI-Ox [1] fĂĽr Windows-Rechner. Letzteres ist auch gleich der casus knacktus: Gerade den hat man im Probenraum oder auf der BĂĽhne selten dabei.

Aufbauend auf dem MIDIvice unseres Klangcomputer-II-Projekts - eigentlich eine universell verwendbare Mikrocontroller-Platine mit integriertem User-Interface [2] - haben wir deshalb mit dem MIDIbug ein Testgerät entworfen, das in jeden Kabelkoffer passt und das weit mehr kann als der angesprochene Leuchtdioden-DIN-Stecker. Es dient sowohl als verlässliche „Quelle“ (MIDI-Noten-Sender) wie auch als „Senke“ (MIDI-Monitor und Tonerzeuger). Es kann sogar gleichzeitig MIDI-Tonfolgen senden und eingehende Daten analysieren, sodass sich auch Patch-Bays, MIDI-Router, Through-Boxen und die komplette Verkabelung damit überprüfen lassen. Wer noch eine alte Wavetable-Erweiterung für SoundBlaster-Karten in seinem Fundus herumliegen hat, kann diese aufstecken und erhält dann sogar einen General-MIDI-kompatiblen Klangerzeuger zur akustischen Kontrolle der numerisch-sterilen MIDI-Daten.

Der Monitor-Modus stellt eingehende MIDI-Befehle (etwa von einem Masterkeyboard oder einem Sequenzer) in hexadezimaler MIDI-Kurzschrift dar. Für eine ausführliche Klartext-Aufschlüsselung nach Events ist zwar weder im Controller-Hirn (8 KByte) noch auf dem zweizeiligen MIDIvice-Display Platz, aber das halbe Dutzend relevanter Status-Bytes hat man schnell verinnerlicht - zumal die Anzeige übersichtlich nach Status- und Datenbytes formatiert erfolgt. Der Hexadezimalzahlen-Reihe ist ein Pascal-typisches „$“ vorangestellt, was nicht nur die Pascal-Affinität des Autors unterstreichen soll: Es ist deutlich augenfälliger als ein hintangestelltes „h“ und platzsparender als das „0x“ der C-Sippe.

Neben dem etwas spröden Monitor-Modus gibt es noch den Activity-Modus, der den eingehenden Datenverkehr auf den 16 MIDI-Kanälen als aufblinkende Ziffern im praktischerweise ebenfalls 16 Zeichen breiten MIDIvice-Display darstellt: Jede der 16 „Stellen“ steht für einen MIDI-Kanal, dargestellt werden die oberen Nibbles (Halb-Bytes) der für jeden Kanal eintreffenden Statusbytes. Das hört sich komplizierter an, als es ist: Trifft beispielsweise das MIDI-Byte $C3 ein, was einen Programmwechsel auf Kanal 4 einläutet (= 3 + 1), blinkt in der vierten Stelle des Displays kurz ein „C“ auf. So hat man den Datenverkehr auf allen 16 Kanälen schnell im Blick, auch Nicht-Techniker werden die Bedeutung der acht möglichen Status-Nibbles $8 bis $F schnell auswendig wissen. Den Hexadezimal-Prefix „$“ muss man sich hier allerdings bei jeder Ziffer davordenken.

Die Funktion von Expandern und anderen tastaturlosen Klangerzeugern (also auch Software-Synthesizer und -Emulationen auf dem PC) lässt sich mit der Pattern-Ausgabe überprüfen: MIDIbug liefert auf Knopfdruck verschiedene sich ständig wiederholende Tonleitern und Akkorde (Pattern), die der Expander dann zu Klängen formen muss. Die Ausgabegeschwindigkeit kann man auf Tempi weit jenseits von Speed Metal steigern, womit sich die in komplexen MIDI-Setups gefürchteten Notenhänger leichter provozieren und isolieren lassen. Der Pattern-Modus mit einstellbaren Programm-, Kanal- und Basisnoten-Nummern leistet übrigens auch in der Werkstatt gute Dienste - man hat bei Reparatur oder Abgleich eines Instruments beide Hände für Lötkolben und Tastkopf frei. Der Pattern-Modus ist mit beiden Anzeige-Modi kombinierbar, MIDIbug liefert nun Patterns und stellt unabhängig davon eingehende Daten auf dem Display dar.

Im Monitor- und Activity-Modus reicht MIDIbug die Daten unbehandelt an den Ausgang weiter, sodass es auch permanent in eine MIDI-Verbindung eingeschleift bleiben kann. „System Exclusive“-Daten und das von einigen Geräten permanent dazwischengefunkte „Active Sensing“ lassen sich bei (Nicht-)Bedarf in beiden Empfangsmodi ausfiltern, dazu steht ein Parameter auf der Optionen-Menüseite zur Verfügung. Zur optischen Kontrolle blitzt die LED über dem MIDIvice-“KeySelect“-Taster bei jedem eintreffenden MIDI-Byte auf. Der KeySelect-Taster dient jetzt zur schnellen Auswahl der Modi, Näheres dazu im Kasten „Bedienung“.

Da die Display-Darstellung zu kleinen Latenzen führt (das LC-Display ist mit Abstand der langsamste Teil der MIDIvice-Schaltung), haben wir noch einen (fast) reinen Through-Modus implementiert, der die MIDI-Daten praktisch verzögerungsfrei an den Ausgang weiterreicht. Wie beim Pattern-Modus fügt MIDIbug hierbei auf Wunsch Programm- und Bankwechsel auf beliebigen Kanälen ein, sodass es auch als simple „Fernsteuerung“ für MIDI-Expander dienen kann.

Der Through-Modus ist noch in anderer Hinsicht von Belang: Die Platine nimmt wie oben erwähnt ein (optionales) Wavetable-Board auf. Dieses hört sozusagen am MIDI-Ausgang mit, reagiert also auch auf Progammwechsel-Befehle des MIDIbug. Ein sinnvolles Recycling: Man erhält mit der Wavetable-Erweiterung praktisch einen vollwertigen General-MIDI-Expander - wie schon in unserem alten Projekt „MIDImal“ [3] , nur diesmal mit kompletter Bedienbarkeit über Taster und Display. Besonders gut klingen übrigens das SCB-55 von Roland und das legendäre DB-50X von Yamaha. Fahnden Sie ruhig mal in Ihrer PC-Schrottkiste oder auf dem Flohmarkt nach diesen Boards - es lohnt sogar, bei eBay 50 Euro für eine Uralt-Soundkarte anzulegen, wenn sie ein Wavetable-Board trägt. Die Soundkarte dagegen taugt in heutiger Zeit nur noch als Türkeil.

Das aufgesteckte Wavetable-Board liefert natürlich auch im Pattern-Modus die von MIDIbug abgespielten „Melodien“ als Audio-Material - das kann beispielsweise beim Einpegeln einer PA-Anlage ganz hilfreich sein, auch wenn die musikalische Darbietung von eher zweifelhafter Qualität ist.

Herz der Schaltung ist der universelle MIDIvice-Controller aus [2] , der mit kleinen Änderungen komplett bestückt wird. Für ein mobiles, kompaktes Gerät ist es ratsam, ein reflektives und nicht das für den Klangcomputer empfohlene hinterleuchtete Display zu nehmen, da Letzteres relativ dick „aufträgt“. Wer sich feinmotorisch nicht das Auflöten des SMD-Prozessors zutraut, erhält bei eMedia und segor (siehe Soft-Link) vorbestückte Platinen. Auf jeden Fall zu bestücken sind der beim Klangcomputer noch optionale Optokoppler U04 für den MIDI-Eingang und die um ihn gescharten Bauteile, namentlich R03, R04, D01 und der Steckverbinder PL07.

Für unser Mustergerät haben wir das „Euro-Gehäuse 2“ von proMa gewählt. Die Frontplatte hat uns die Firma Schaeffer Apparatebau nach Vorlage gefräst, Kostenpunkt rund 22 Euro. Eine Vorlage für deren „Frontplatten-Designer“ finden Sie unter dem Soft-Link.

Achten Sie beim hier eingesetzten CNY-17 auf den Suffix in der Typenbezeichnung. Geeignet sind CNY17-1 bis -3, wenn man den Pullup-Widerstand R04 entsprechend anpasst: 1k2 fĂĽr den CNY17-3, 1k5 fĂĽr den -2 und 1k8 beim -1. Der CNY17-4 hat zwar einen hohen Koppelfaktor, ist aber zu langsam. Versuchen Sie nicht, einen PC900 einzusetzen, der hat eine abweichende Anschlussbelegung.

Montage der Baugruppen unseres Mustergerätes: ganz unten die MIDIvice-Platine, darüber die Grundplatine und von deren Lötseite aufgesetzt das Wavetable-Board. Durch die einseitige Kaschierung der Grundplatine (hier unser hausgebackener Prototyp) muss der Steckverbinder PL10 wie gezeigt durchgesteckt und verlötet werden.

Anstelle der Steckverbinder PL01, PL03, PL06 und PL07 haben wir so genannte Stapelleisten verwendet, die bis zur im Folgenden beschriebenen Grundplatine reichen und dort von Buchsenleisten aufgenommen werden. So wird nur eine minimale Verkabelung nötig, die lediglich das Netzkabel umfasst (siehe Bild). Eine Besonderheit ist bei der Steckleiste PL10 der Grundplatine zu beachten: Um das Gerät möglichst kompakt zu halten, muss das Wavetable-Board von der Lötseite her aufgesetzt werden. PL10 muss daher wie im Bild ersichtlich von der Bauteileseite durchgesteckt und auf der Lötseite kleckerfrei verlötet werden. Es gibt zwar Stiftleisten mit extra langen Kontakten, es reicht aber, eine normal lange vorsichtig mit einem kleinen (!) Hammer durchzuklopfen, bis die Stifte auf der Lötseite lang genug sind.

Die Schaltung der Basisplatine ist eher schlicht, sie enthält neben einem Netzteil nur die zwei MIDI-Buchsen und die Ausgangsverstärker für die optionale Wavetable-Platine. Allerdings erfüllt sie auch den Zweck eines Baugruppenträgers und vereinfacht die Verdrahtung - die Frage, ob die Anschlussbelegung der DIN-Buchsen jetzt von der Vorder- oder Rückseite gemeint ist, stellt sich damit nicht. Dank der Einfachheit konnte sie einseitig kaschiert gehalten werden, ein Selberätzen kommt anhand unserer unter dem Soft-Link verfügbaren Vorlage also durchaus in Frage. Der Ausgangsverstärker rund um U1 und das symmetrische 12V-Netzteil (U2, U3, RB1) muss natürlich nur dann bestückt werden, wenn Sie ein Wavetable-Board einsetzen wollen. Wir haben deshalb zwei Stücklisten angegeben, die sich auch in der Dimensionierung des Trafos unterscheiden. Da die 5V-Versorgung des Wavetable-Boards vom MIDIvice aus über die Steckverbindung PL03 erfolgt, ist hierfür der kräftigere Trafo nötig, auch sollte der Spannungsregler U05 auf dem MIDIvice mit einer kleinen Kühlschelle versehen werden.

Das einseitige Layout finden Sie als druckfähige PDF-Datei unter dem Soft-Link. Wer das Selberätzen scheut, wendet sich für eine Fertigplatine an eMedia. Vergessen Sie bei der Bestückung nicht die vier Drahtbrücken (etwa unter „Conn1“).

Die MIDIvice-Platine kommt solo mit sehr wenig Strom aus und kann auch aus einem 6V-Mignonzellen-Batteriesatz versorgt werden, wenn man den Spannungsregler 7805 des Controller-Boards durch die Low-Drop-Variante L4941 ersetzt und die Batteriespannung von 6V direkt an C10 zuführt (Polung beachten). Für den gelegentlichen Gebrauch reicht sogar eine 9V-Blockbatterie, die an PL01 angeschlossen wird (hier ist die Polung durch den nachfolgenden Gleichrichter egal). Bei Batteriebetrieb sind die Trafos natürlich obsolet. Wer die Wavetable-Erweiterung nicht benötigt, kann die MIDIvice-Platine an PL01 auch direkt aus einem 9V-Steckernetzteil versorgen, dies empfiehlt sich für den Firmware-Programmiervorgang ohnehin.

Der TxD-Ausgang des MIDIvice-Controllers ATmega8 ist übrigens kräftig genug, um zwei MIDI-Schnittstellen direkt zu treiben, etwa für die angesprochene Wavetable-Karte plus dem eigentlichen MIDI-Ausgang. Ersetzen Sie den Vorwiderstand R02 auf der MIDIvice-Platine deshalb durch eine Drahtbrücke, seine Funktion wird von R2 auf der Grundplatine übernommen.

Die MIDIbug-Grundplatine besteht nur aus einem Netzteil, den MIDI-Buchsen und einem Stereo-Ausgangsverstärker für das recht niederpegelige Signal der optionalen Wavetable-Platine.

Der MIDIvice-Prozessor muss natürlich nach Vollendung der Baugruppe mit der MIDIbug-Firmware gefüllt werden. Auf der Klangcomputer-Website ist das Vorgehen für Mikrocontroller-Unerfahrene genau beschrieben, hier finden Sie auch das Firmware-Paket. Als „Trichter“ eignet sich übrigens der auch beim c't-bot verwendete Atmel-ISP-Programmieradapter, für den es bei eMedia eine kleine Platine gibt.

Abschließend noch eine ernsthafte Warnung - nicht nur, weil wir Sie ungern als Leser verlieren möchten: Die Grundplatine führt in der Nähe der Trafos Netzspannung, der Anschluss des Netzkabels muss unbedingt mit der gebotenen Sorgfalt geschehen. Auch dürfen benachbarte Teile nicht näher als fünf Millimeter (besser zehn Millimeter) an die netzspannungführenden Leiterbahnen (in der Nähe der Sicherung und der Trafos, siehe Layout) heranragen. Wir haben die dicken Netz-Leiterbahnen zwecks Berührungsschutz mit einer dicken Wurst Heißkleber isoliert. Bei Verwendung eines Metallgehäuses ist dieses mit dem grün-gelben Schutzleiter des Netzkabels zu verbinden.

[1] MIDI-Ox Webseite

[2] Carsten Meyer, Klangcomputer II, c't 14/05 S. 196

[3] Frank Popp, Carsten Meyer, Wavetable-Board als MIDI-Expander, c't 1/97 S. 328

Soft-Link

MIDIbug lehnt sich in der Bedienung eng an die MIDIvice-Firmware an, allerdings erhält die „KeySelect“-Taste eine neue Bedeutung: Sie dient nun zur Auswahl des Modus und wechselt von „Through“ auf „Monitor“ und „Activity“. Mit den Rechts/Links-Tastern kommt man in allen Betriebsarten in die Parameter-Optionen und wieder zurück, Auf/Ab verändert den gewählten Wert. Steht bei den Parametern „-*-“, wird der Wert nicht gesendet oder die Funktion nicht ausgeführt (etwa bei „Pat“). Alle Tasten besitzen einen Autorepeat. Parameter sind dezimal anzugeben, während die Anzeige im Monitor- und Activity-Modus hexadezimal erfolgt. Die Parameter für Programmnummer, Bank, Kanal und so weiter lassen sich wie beim MIDIvice in 32 „Sets“ abspeichern. Nach dem Einschalten geht MIDIbug immer erst in den Through-Modus.

StĂĽckliste
ohne Wavetable-Board
R1 10R
R2 DrahtbrĂĽcke (R02 auf MIDIvice-Platine bleibt 180R)
TR2 Print-Trafo 1x9V EI30 1,5VA
FS1 Sicherung 100mAF mit Halter
PL01, PL06, PL07 Buchsenleisten einreihig
PL03 Buchsenleiste zweireihig 10-pol.
PL11, PL12 DIN-Buchsen 5-polig Print
PL13 Schraubklemme 2-pol.
sonstiges proMa Euro-Gehäuse 1
mit Wavetable-Board
U1 TL082 oder TL072
U2 7812
U3 7912
C1,C3,C4,C6 100n ker. RM 5mm
C2,C5 470µ/25V
C10 auf MIDIvice-Platine auf 1000µ/16V vergrößern
R02 auf MIDIvice-Platine durch DrahtbrĂĽcke ersetzen
R1 10R
R2 220R
R3,R5 220R
R7,R8 22k
R4,R6 100k
TR1 Print-Trafo 2x12V EI30 1,5VA
TR3 Print-Trafo 1x9V EI38 3,6VA
FS1 Sicherung 100mAF mit Halter
PL01, PL06, PL07 Buchsenleisten einreihig
PL03 Buchsenleiste zweireihig 10-pol.
PL10 Stiftleiste 26-pol.
PL11, PL12 DIN-Buchsen 5-polig Print
PL14,15 Stiftleisten einreihig
PL13 Schraubklemme 2-pol.
sonstiges proMa Euro-Gehäuse 2 Abstandsröllchen/bolzen 5, 10, 18 mm, Wavetable-Board

(cm)