★ HARDWARE ★ MONTAGES ★ MIDI FÜR DEN SCHNEIDER (CPC AMSTRAD INTERNATIONAL) ★![]() |
MIDI für den Schneider (CPC Amstrad International) | Hardware Montages |
Nachdem der C64 lange Zeit marktbeherrschend in Bezug auf Musikcomputer gewesen war, werden jetzt auch Computer wie z.B. Atari ST und Amiga midifahig. CPC-Besitzer mußten aber lange auf das EMR MIDI-Interface warten. Jetzt ist es da, aber man muß ca. 500,— DM für das Interface (incl. Software) auf den Ladentisch legen. Der Selbstbau eines solchen Interfaces bietet hier die Möglichkeit, die gleiche Leistung für ein Viertel des Ladenpreises zu bekommen. Das Interface wird in diesem Falle nicht in der Form einer Karte für den ECB-Bus, sondern als eigenständiges Gerät zum Anschluß an den Expansionsport des 464, 664 und 6128 aufgebaut. Das MIDI-Interface ist im Grunde nur eine spezialisierte V-24-Schnittstelle, das heißt, daß die Schaltung mit dem selben IC SAB8251 arbeitet, das schon in Schneiderware #3 als asynchrone und serielle Schnittstelle benutzt wurde. Der gesamte Aufbau gliedert sich in zwei Teile: Interface und Timer. Der MIDI-Standard Für alle, die nicht wissen sollten was MIDI ist, will ich es kurz erklären: MIDI ist ein Datenübertragungssystem für elektronische Musikinstrumente, das von führenden Herstellern dieser Instrumente wie Yamaha, Roland, Korg etc. genormt wurde. Mit diesem System ist es möglich, z.B. mit einem Computer und geeigneter Software eine große Anzahl elektronischer Musikinstrumente zu arrangieren und damit zu komponieren. Der MIDI-Standard basiert auf einer asynchronen Übertragung serieller Daten mit einer Baudrate von 31.25 kBaud. Das Datenformat hierzu zeigt Bild 1. Die Sende- bzw. Empfangsdaten gliedern sich zum einen in Befehlsbytes und zum anderen in Datenbytes. Befehlsworte werden durch ein gesetztes siebtes Bit gekennzeichnet. Die Channelinformation-Daten -das sind die Befehle, die alle MIDI-Keyboards gemeinsam haben (sollten) — fordern auf das Befehlsbyte jeweils entweder ein oder zwei Datenbytes. Weiterhin muß nicht nur übermittelt werden, ob es sich um ein Befehlswort handelt, sondern auch, welcher MIDI-Kanal benutzt wird. MIDI unterstützt bis zu 16 verschiedene Kanäle zur Datenübertragung. Somit kann man jedem angeschlossenen MIDI-Gerät nur die Daten zuordnen, die für das Gerät gedacht sind. Der MIDI-Kanal wird durch die unteren vier Bit des Befehlsbytes bestimmt. Eine Auflistung der wichtigsten Befehle zeigt Tabelle 1.
Der Aufbau Der Aufbau teilt sich, wie oben gesagt, in zwei Teile. Das Interface selbst ist für zeitunkritische Anwendungen gedacht. Zeitunkritische Anwendungen sind z.B. Klangeditoren. Man kann jedoch nur Sequenzerprogramme laufen lassen, wenn man die Timerkarte hinzuzieht. Man sollte sich also im klaren darüber sein, ob man mit dem Interface professionell arbeiten will, oder ob man nur ein wenig experimentieren möchte. Der Timer liefert zusätzlich ein Taktsignal, das zur Synchronisation von Bandmaschinen und Drumcomputem genutzt werden kann bzw. kann ein ähnliches Taktsignal dem Interface zur Synchronisation zugeführt werden (je nach Software 24 oder 48 Impulse pro Viertelnote). Das Interface besteht aus Adresscodierung, Resetcodierung, dem 8251, dem Baudratengenerator und den Datenleitungstreibern. Die nötige Sende- und Empfangsfrequenz wird durch Teilung des Prozessortaktes mittels IC 6 und IC 7 erzeugt. Die beiden ICs sind vom Typ 74LS93 und teilen die 4 MHz des Prozessors einmal durch 16 und durch 128. IC 1-3 büden die Adresscodierung und die Resetsteuerung (Portadressen siehe Tabelle 3). Der 74LS245 dient als Buspuffer. Je nach Programmierung kann per J1 entweder auf 500 KHz oder auf 31.25 kHz Sende- und Empfangstakt eingestellt werden. Dies dient der Kompatibilität des Interfaces zu anderen (späteren) Programmen. Bei Verwendung der 500 KHz kann man auch auf IC 7 verzichten. Der Optokoppler CNY17 sorgt bei der Verbindung mehrer Interfaces (Keyboards) für galvanische Signaltrennung, so daß keine Kurzschlüsse beim Zusammenschalten entstehen und sich auswirken können. Das Receive-Ready-Signal des 8251 wird durch IC 5 invertiert und dem Interrupteingang des CPC zugeführt, um einen Datenverlust durch Polling (ständige Abfrage des Ports) zu verhindern. Ein Problem der Intemiptsteuerung trat bei der Entwicklung des Interfaces auf. Das durch den Inverter erzeugte Interruptsignal blockierte den Computer vollständig, so daß der Einsatz eines Open-Collector-Typs nötig wurde. Bei dem »normalen« Typ entstand am INT-Eingang der Z80-CPU ein Kurzschluß mit dem Ausgang des Gate-Arrays. Schaltplan und Bestückung des Interfaces zeigen die Bilder 2 und 3.
Der Platinenaufbau Die Layout- und Bestückungsseiten der Platine müssen bei der Selbstherstellung absolut deckungsgleich übereinander gebracht werden, damit man beim Bohren nicht aus Versehen eine Leiterbahn der anderen Seite durchbohrt. Anschließend sollte man sich Kupferhohlnieten mit 1 mm Durchmesser besorgen und alle Bohrungen durchkontaktieren. Wem das zu aufwendig ist, der kann sich auch WireWrap-IC-Fassungen besorgen, bei denen ein beidseitiges Verlöten gut möglich ist. Beim Bestücken der Platine sollte man wie immer die Reihenfolge: Brücken, Widerstände, Kondensatoren, IC-Fassungen, Dioden und übrige Halbleiter einhalten. Der Einbau in ein Gehäuse erfolgt so, daß noch Platz für die Timerplatine ist, felis sie eingebaut werden soll. Inbetriebnahme des Interfaces Die fertige Platine wird nach einer optischen Kontrolle an eine Stromversorgung angeschlossen, ohne daß die ICs eingesteckt sind, und nach Kurzschlüssen in der Stromversorgung untersucht. Erst dann wird die Platine ohne ICs an den Expansionsport über ein 50-poliges Flachkabel mit den entsprechenden Steckverbindern angeschlossen. (Bild 4 zeigt das Schema hierzu.) Sollte der Computer abstürzen, muß die Platine dringend nach Kurzschlüssen untersucht werden. Ansonsten kann begonnen werden, die ICs 1—7 einzustecken und erneut wird der Computer eingeschaltet. Vorsicht! Manipulationen an der Platine nur bei ausgeschaltetem Computer vornehmem! Ist soweit alles in Ordnung, wird auch IC 8 eingesetzt. Im anderen Fall müssen alle Signale nochmals überprüft werden.
Programmierung des Interfaces Vor Beginn der Sendung oder des Empfangs von Daten muß der SAB 8251 mit einem Satz von Steuerworten geladen werden. Diese Steuersignale legen die gesamten Funktionseigenschaften des SAB 8251 fest und müssen unmittelbar nach einem Resetvorgang (Einschalten des Computers) folgen. Die Steuerworte teilen sich in zwei Formate auf: — Betriebsart Das Betriebsarten-Format legt Datengeschwindigkeit, Zeichenlänge und Start- und Stopbits fest (siehe Tabelle 2). Das Kommando-Format regelt die Empfangs- und Sendefreigabe. Beide Formate müssen direkt aufeinander folgen. Anschluß und Probe Nach Verbindung der Buchse MIDIOUT am Interface und der Buchse MIDI-IN an einem MIDI-Keyboard durch ein DIN-Kabel kann Listing 1 eingegeben und gestartet werden. Nach dem Start muß das MIDI-Keyboard für einen Moment einen C-Dreiklang ausgeben. Funktioniert dies soweit, kann man zunächst zum Punkt MIDI-RECORDER übergehen. Ansonsten ist es nötig, alle Verbindungen zu überprüfen und nach möglichen Unterbrechungen und Kurzschlüssen zu untersuchen. Die Eingabe bzw. der Start des Listings 1 ist dann zu wiederholen.
Timer & Synchronizer Wozu der Timer? Der einzige im CPC befindliche Timer ist der Fast-Ticker, der mit einer Frequenz von 300 Hertz arbeitet. Die für einen Sequenzer benötigten Tempi liegen zwischen 40 und 400 Beats per Minute, d.h. Viertelnoten pro Minute. Bei einer Auflösung von 48 Schlägen pro Viertel ergeben sich Timerfrequenzen zwischen 32 und 192 Hz, die nur durch Division der 300 Hz des CPC-Timers durch die gewünschte Frequenz erreichbar sind. Beachtet man, daß nur durch Integerzahlen dividiert werden kann, so ist nur eine Unterteilung in 8 Tempi möglich. Je höher die Timergrundfrequenz ist, desto größer ist also auch die Auflösung der Geschwindigkeitsregelung. Als Timerbaustein dient ein Z80 CTC, der für die Verwendung in Z80 Systemen optimiert ist. Er enthält vier 8 Bit-Timer, die durch Verbindung ihrer Ein- und Ausgänge kaskadiert werden können. Die Programmierung des CTC kann Tabelle 4 entnommem werden. Das IC3 74 LS 121 ist ein Monoflop, das die extrem kurzen Impulse des CTC verlängert. Die Impulslänge des CTC beträgt nur die Länge eines 4 MHz-Taktimpulses des Prozessortaktes, von dem der CTC gespeist wird. Die gestreckten Impulse werden über zwei open-collector-Inverter des 74LS05 auf saubere TTL-Pegel gebracht, die direkt am Sync-OUT-Ausgang abgenommen werden können. Die anderen beiden Inverter bereiten das Signal am Sync-IN-Eingang auf und geben ihn auf den Timer, der die ankommenden Impulse zählt. Der Öffner in der Sync-IN-Buchse schaltet dann den internen Takt der oberen beiden Timer ab. Die Timerplatine ist nur einseitig ausgelegt, so daß bei der Herstellung keine Probleme auftreten dürften. Bei der Bestückung geht man genauso vor wie bei der Interfaceplatine. Schaltplan und Bestückungsplan zum Timer zeigen Bild 5 und 6. Nachdem die fertige und überprüfte Platine an Interface und Computer angeschlossen worden ist, kann Listing 2 eingegeben und gestartet werden. Auf dem Bildschirm sollte eine Zahl erscheinen, die im Sekundentakt dekrementiert wird. Darauf wird ein Klinkenkabel in die Sync-IN-Buchse gesteckt. Der Zählvorgang wird nun unterbrochen und erst nach Einstecken des anderen Kabelendes in die Sync-OUT-Buchse fortgesetzt. Der Hardwareaufbau ist somit abgeschlossen. Die Kosten für die Bauteile liegen bei ca. 120,— DM. Wie Interface und Timer zusammengebaut werden, zeigt Bild 7.
Der MIDI-Recorder Das beste Interface nützt ohne Software gar nichts, also müssen Treiberroutinen her. Daß das Senden von Daten ziemlich einfach ist, hat Listing 1 gezeigt. BASIC ist also für das Senden »langsam« genug. Warum langsam genug, werden sich einige fragen, aber es ist kein Denkfehler. Beachtet man, daß der MIDI-Standard eine Übertragungsrate von 31.25 kBaud hat, erkennt man relativ schnell, daß zwischen zwei zu sendenden Daten genau 320 Mikrosekunden »Wartezeit« liegen, bevor das nächste Byte gesendet werden kann. Diese Zeit berechnet sich daraus, daß ein übertragenes Datenwort aus acht Bit plus Start- und Stopbit besteht, d.h., daß bei 31.25 kBit pro Sekunde genau 3125 Daten pro Sekunde übertragen werden. Diese Zeit überbrückt BASIC allein schon durch den Sprung von einer Zeile zur anderen. Nur bei Maschinensprache muß man aufpassen. Hier ist nach jeder Ausgabe in das Datenregister des 8251 eine Warteschleife einzubauen: LD BC, &F8F8Wo bekommt man die ganzen Sendedaten her? Richtig! Man kann sie ja vorher empfangen, indem man z.B. von einem MIDI-Keyboard einspielt. |
| ![]() |
|