Midi-Interface

Mit dem Selbstbau-Interface steuern Sie Ihr Keyboard und verewigen und analysieren eigene Kompositionen.


diese Seite beinhaltet:

Die Band aus dem C64

Ein Begriff ist für Musiker kaum mehr wegzudenken. - MIDI -. Diese Computerschnittstelle ist inzwischen fast in jedem Tastaturinstrument eingebaut und erlaubt die externe Steuerung oder steuert weitere Instrumente, seien es weitere Keyboards oder Synthesizer oder Stimmgeneratoren, sog. Expander. Das Übertragungsverfahren dabei ist relativ einfach, die Daten eines Steuerworts (8 Bit) werden seriell (Bit für Bit) übertragen. Allerdings relativ schnell, mit 31,25 KBaud (31259 Bit pro Sekunde). Leider beherrscht der C64 diese Geschwindigkeit nicht. Doch dafür stellen wie Ihnen eine Schaltung zur Verfügung, Die entsprechende Software lässt ein Analysieren und Speichern zu und erlaubt sogar die Steuerung des Keyboards. In der Zeit vor MIDI war es kompliziert und teuer, Musikinstrumente miteinander zu synchronisieren. Zwar gab es auch hier schon Geräte, die sich miteinander verknüpfen ließen, aber dies funktionierte nur jeweils innerhalb einer Firmenmarke oder setzte zig Steuerleitungen voraus. Das Geburtsjahr für eine neue Instrumentengeneration wurde 1980.

Daten der MIDI-Norm

Die Vorteile von MIDI liegen nicht nur in der Verknüpfung unterschiedlichster Musikinstrumente, sondern auch in deren Steuerung per Computer. Erst dadurch kann auch ein Hobbymusiker ein komplettes Orchester in den Computer einspielen und ohne großen Kostenaufwand erklingen lassen. Beachtenswert ist, dass dies auch mit dem C64 möglich ist. Allerdings sollte man die Norm kennen bevor man sich ein eigenes Programm maßschneidert. Die Daten werden, wie schon erwähnt, seriell übertragen. Zur Erkennung der Daten wird zu Beginn einer Übertragung ein Status-Byte gesendet. Bei ihm ist grundsätzlich das höchstwertige Bit (Bit 7) gesetzt. Danach können beliebig viele Daten-Bytes folgen. Bei ihnen ist immer Bit 7 gelöscht. Die Daten-Bytes lassen sich in drei Hauptgruppen aufteilen:

1. Channel Information

...ist Steuerinformation und enthält in den vier höchstwertigen Bits (oberes Nibble) das Steuerwort. In den vier niedrigstwertigen folgt die angesprochene Kanalnummer (0 bis 15 entspricht Kanälen 1-16). Da diese Kanalinformation in den angeschlossenen Geräten ausgewertet wird, lassen sich bis zu 16 Geräte unabhängig voneinander steuern. Als Standard werden von allen MIDI-Geräten folgende Befehle verstanden:

$9X - 144+Kanal (X) - Note an
Dieser Information folgen zwei Daten-Bytes:
1.Byte: $00 bis $7F (127) - Tastennummer (Key)
Das mittlere >C< hat die Nummer 60. Alle C-Tasten entsprechen dem Vielfachen von 12.
2.Byte: $00 bis $7F (127) - Anschlag (Velocity)
1 = leicht, 127 = stark. Bei >0< wird die Note ausgeschaltet. Keyboards ohne Anschlagdynamik senden immer 64.
$8X - 128+Kanal (X) - Note aus
...hier folgen ebenfalls zwei Daten-Bytes:
1.Byte: $00 bis $7F (127) - Tastennummer (Key)
2.Byte: $00 bis $7F (127) - Release
...entspricht der Geschwindigkeit beim Loslassen der Taste.
$AX - 160+Kanal (X) - Tastendruck
...auch hier folgen zwei Daten-Bytes:
1.Byte: $00 bis $7F (127) - Tastennummer (Key)
2.Byte: $00 bis $7F (127) - Aftertouch
...entspricht der Stärke des Tastendrucks. Dadurch lässt sich ein Ton nach dem Drücken der Taste in der Lautstärke beeinflussen. Diesen Parameter können allerdings die meisten Keyboards nicht senden.
$BX - 176+Kanal (X) - Parameteränderung
...wieder folgen zwei Daten-Bytes:
1.Byte: $00 bis $7F (127) - Befehl
...wird herstellerspezifisch festgelegt, lediglich vier Werte sind definiert:
124 Fernbedienung an/aus
125 Omni-Mode an, alle Noten aus
126 Mono-Mode an, alle Noten aus
127 Poly-Mode an, alle Noten aus
2.Byte: $00 bis $7F (127) - Parameterwert
Für die Modus-Befehle ist dieser Wert immer Null, bei Fernbedienung bedeutet 0 = fernbedient, 127 = intern.
$CX - 192+Kanal (X) - Parameterwechsel
...hier folgt 1 Daten Byte:
$00 bis $7F (127) Programmnummer
$DX - 208+Kanal (X) Taste (Mono-Mode)
...auch hier folgt 1 Daten-Byte:
$00 bis $7F (127) - After Touch bei Mono-Mode
$EX - 224+Kanal (X) - (Tonhöhe) Pitch-Wheel
...hier folgen wieder zwei Daten-Bytes:
1.Byte: $00 bis $7F (127) - MSB Veränderung
2.Byte: $00 bis $7F (127) - LSB Veränderung
Beide Bytes zusammen ergeben einen 14-Bit-Wert, der die Position das Rads wiederspiegelt. Die Mittelstellung ist  >$00 $40<

2. System Exclusive - $F0

... sind herstellerspezifische Datenbefehle. Die Anzahl der Daten-Bytes ist hier nicht vorgeschrieben. Das Steuerwort (erstes Byte, $F0 = 240) leitet den Vorgang ein, das zweite (0 bist 127) enthält eine Herstellerkennung. Trifft diese Kennung nicht für den Empfänger zu, werden alle folgenden Daten überlesen, solange Bit 7 nicht gesetzt ist. Ein beliebiges Steuerwort (Bit 7 = gesetzt), schließt die Datenübertragung ab.

3. System Realtime

... dient zum Synchronisieren von Computern, Sequenzern etc., in Echtzeit. Die Bytes sind Einbyte-Befehle und dürfen zu jedem Zeitpunkt, also auch zwischen zwei Daten-Bytes, übermittelt werden. Sie gelten für alle Kanäle:

$F8 (248) - Clock
... gibt einen Zeittakt 24mal pro Viertelnote
$F9 (249) - Ende
... ersetzt Clock am Ende einer Sequenz
$FA (250) - Start
... erscheint zu Beginn einer Sequenz. Der Clock-Impuls muss innerhalb von 5 Millisekunden folgen.
$FB (251) - Fortsetzung
... wird bei der Fortsetzung einer abgebrochenen Sequenz gesendet.
$FC (252) - Scnc
... erscheint während Spielpausen und sorgt für ein weiterlaufendes Timing.

4. System Common

gelten unabhängig vom eingestellten Kanal.

$F2 (242) - Takt/Sequenzernummer
... hier folgen zwei Daten-Bytes
1.Byte: $00 bis $7F (127) - MSB Sequenznummer
2.Byte: $00 bis $7F (127) - LSB Sequenznummer
$F3 (243) - Partiturnummer
hier folgen zwei Daten-Bytes
1.Byte: $00 bis $7F (127) - MSB
2.Byte: $00 bis $7F (127) - LSB
Beide Bytes zusammen ergeben einen 14-Bit-Wert, der die Nummer der nächsten Partitur (Sing) angibt.
$F6 (246) - Stimmen
...bewirkt ein Selbststimmen der angeschlossenen Geräte, wenn Sie diesen Befehl anwenden können.

5. System Reset - $FF

... setzt alle angeschlossenen Geräte in den Einschaltzustand zurück. Vorsicht bei diesem Befehl.

Software

In der Image-Datei befindet sich ein Testprogramm, Es besteht aus einem Maschinenprogrammteil, der auch eigenes Programmieren erlaubt und aus einem kurzen Testprogramm der Schnittstelle. Verbinden Sie die MIDI-IN über ein Diodenkabel mit der MIDI-OUT-Buchse und laden Sie das Programm mit: LOAD "MIDITEST",8 und starten Sie mit RUN . Das Testprogramm lädt nun ein Maschinenprogramm (MIDIFILE) nach, sendet die Daten 12,7,9,4,6,3,57 und 3 zum Interface und empfängt sie wieder. Anschließend werden beide Werte nebeneinander dargestellt. Stimmen beide überein, ist das Interface in Ordnung. Nach Ausgabe der Zahlen wartet das Programm auf einen Tastendruck und führt danach einen RESET aus. Das Maschinenprogramm "MIDIFILE" ist zudem eine Betriebssystemerweiterung, mit der Sie Ihr Instrument von Basic aus ansprechen können. Bevor Sie es in eigenen Programmen verwenden, muss es unmittelbar geladen werden: LOAD "MIDIFILE",8,1. Anschließend geben Sie NEW ein. Initialisiert wird sowohl das angeschlossene Interface als auch die Routine selbst mit SYS 51968. Die Daten übertragen Sie mit SYS 51987,Wert . Beispielsweise sendet SYS 51987,255 einen RESET zum angeschlossenen MIDI-Keyboard. Tastatureingaben des Keyboards lassen sich mit SYS 51997 : MI=Peek(780) : PRINT MI lesen, in die Variable "MI" (oder in eine andere) übernehmen und danach verwenden (im Beispiel am Bildschirm ausgeben). Achtung: Bei zweimaligen Initialisieren der Routine hängt sich der Computer auf. Ein Aus/Einschalten des Interfaces und anschließendes Neuladen des Programms bringt Abhilfe. Da im Interface kein Schalter vorgesehen ist, müssen Sie diesen bei Bedarf mit einem Kabel nachträglich aus dem Interface rausführen. Dazu entfernen Sie die Durchkontaktierung der Pluszuführung (zweiter + dritter Kontaktstreifen von rechts auf der oberen Seite des Interface, Kontaktstreifen vorn) und löten ein zweipoliges Kabel an den oberen und unteren Kontakt. An das andere Ende des Kabels löten Sie einen Schalter. Ein drittes Programm zeigt Ihnen die Sendedaten eines angeschlossenen MIDI-Keyboards. Sie laden mit: LOAD"RECEIVETEST",8,1 Anschließend setzt NEW den Basic-Speicher zurück. Mit SYS49152 starten Sie das Programm. Am Bildschirm sehen Sie bei den empfangenen Daten am Zeilenanfang das Status-Byte, danach erscheinen die Daten-Bytes. Mit dem MIDI-Interface und "MIDIFILE" genügen schon minimale Basic-Kenntnisse, um Ihr Keyboard fernbedient zum Spielen zu bringen.

Quelle: 64'er Sonderheft 84

Am Schluss vielleicht noch ein Tipp für Software zum MIDI-Interface. Wollen Sie ein Sequenzer-Programm benutzen, dann empfiehlt sich das Programm "Supertrack" von C-Lab-Software. Besitzen Sie einen DX 7 von Yamaha, so kommen Sie mit dem Programm "DX 7 Editor" von Steinberg Research um den Kauf eines teuren RAM-Cartridges herum. Mit diesem Programm ist es nämlich möglich, die Musikdaten des DX 7 auf eine Diskette zu speichern und von dort auch wieder in den Computer zu laden.

Quelle: 64'er Sonderheft 13


Bildliche Darstellung

 

Platinenlayout für Universal-Modul

Das hier abgebildete Platinenlayout wurde mit Autotrax erstellt, die entsprechende Datei zu diesem Layout kann man hier: . ZIP-Datei mit Autotrax-Layout downloaden. Näheres zu Autotrax und Download findest Du auf der Hardware-Hauptseite.


Schaltplan

Schaltplan aus der 64er
( bitte die Schaltung Anklicken, um sie in Originalgröße zu bewundern )


Bestückungsplan


Bestückungsplan für Midi-Interface


Softwaredownload

Midi-Slave (32 KB) D64 Diskettenimage mit Supertrack-Software Supertrack (69 KB) D64 Diskettenimage mit Wersi-Sequenzer-Software Wersi-MIDI-Sequencer (32 KB)

Hucky 01.11.2004

"Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !"

I Hardware-Hauptseite I Startseite I