Unter Synchronisation versteht man die zeitgenaue Koppelung von zwei oder mehr Geräten. Synchronisation ist in vielen ton- und bildtechnisch orientierten Anwendungsgebieten vonnöten. Dabei können mittels verschiedener Synchronisationsstandards und -formate (FSK / Frequency Shift Keying, DIN-Sync / Deutsche Industrie-Norm, SMPTE / Society Of Motion Picture and Television Engineers, VITC / Vertical Integrated Time Code, LTC / Longitudinal Time Code, MIDI Clock, MTC / MIDI Time Code usw.) unterschiedlichste Geräte (Bandmaschinen, Videorecorder, Harddisk-Recorder, DATs, Computer, Sequencer, Drum-Computer usw..) miteinander gekoppelt werden. An dieser Stelle sollen nur die direkt MIDI-bezogenen Standards MIDI Clock und MIDI TIME CODE (MTC) Erwähnung finden.
MIDI Clock ist ein simples Verfahren, welches die System Messages nutzt. Prinzipiell muss bei der Synchronisation ein Gerät (Master) die von ihm erzeugten Synchronisations-Signale an das zu steuernde Gerät (Slave) übermitteln. Die Zuordnung, ob ein Gerät als "Master" oder als "Slave" fungiert, ist mittels dessen Synchronisations-Parameter zu treffen (Sync INT = Master, Sync EXT / MIDI = Slave).
Sollen z.B. Daten von einem Sequencer in einen zweiten überspielt werden, so ist es notwendig, die beiden Geräte miteinander zu synchronisieren, um den Taktbezug des Stücks nicht zu verlieren. In diesem Fall ist es sinnvoll, den aufnehmenden Sequencer zum "Master" und den abspielenden Sequencer zum "Slave" zu machen, da dadurch der Datenfluß des abspielenden Gerätes nicht auch noch durch die System Messages belastet wird.
Leider sind die Fähigkeiten synchronisationsfähigen MIDI-Equipments sehr unterschiedlich. So erkennen z.B. die einfachsten Geräte dieser Art ausschließlich die MIDI-Clock F8H, ignorieren aber START- und STOP-Befehle. Diese Geräte beginnen zu spielen, sobald sie die Clock erhalten...
Andere Geräte wiederum akzeptieren sowohl die Clock als auch die START- und STOP-Befehle ( FAH bzw. FCH ), wissen jedoch nichts mit dem CONTINUE Befehl FBH anzufangen. Werden solche Geräte mitten im Song gestoppt, um kurz darauf weiterzuspielen, so starten sie immer erneut vom Songanfang...
Die höchstentwickelten Geräte sind in der Lage, an beliebiger Stelle eines beliebigen Songs gestartet und gestoppt zu werden. Dieses ist durch die Befehle SONG SELECT F3H und SONG POSITION F2H möglich.
Außerdem gibt es Geräte, die sich einer Kombination der verschiedenen Eigenschaften bedienen. Solche Geräte lassen sich z.B. via MIDI starten und stoppen, beziehen jedoch die Geschwindigkeitsinformation von ihrer internen Clock. Das Gegenstück dazu sind Geräte, die lediglich FAH, FBH und FCH, nicht jedoch F8H generieren...
In jedem Fall sind die Synchronisations-Parameter eines Gerätes eine nähere Betrachtung wert, bevor ein solches erworben wird.
Bei SMPTE-bezogenen Synchronisationsverfahren wird als Referenz eine genaue, absolute Zeitbasis benötigt. Die ersten Synchronisations-Standards entstanden bei der Filmnachvertonung. Darum ist die kleinste übliche Zeiteinheit ein "Bild" (engl.: "Frame"). Da Filme international mit unterschiedlichen Bildfrequenzen erstellt werden, ist es notwendig, das benutzte Format anzugeben (24, 25, oder 30 Bilder bzw. "Frames" pro Sekunde oder das 30er Dropframe- Format).
Beim MIDI Time Code (MTC) handelt es sich um ein aufwendigeres Verfahren, einen absoluten Zeitcode als Synchronisationsbezug in das MIDI-System zu integrieren. Er wird entweder in Form von universellen Sysex-Daten oder in Form von System Messages übermittelt.
Eine solche Zeitreferenz sieht dann z.B. wie folgt aus:
01:32:49:13
Bei einer Abtastfrequenz von 30 Bildern pro Sekunde bedeutet obige Angabe "Eine Stunde, zweiunddreißig Minuten, neunundvierzig Sekunden und 13/30 Sekunden (= 13 Frames). Als MTC wird diese Zeitreferenz viermal pro Frame durch eine sogenannte "Short Message" in Form von System Meldungen übermittelt. Die sogenannte "Full Message", die durch "Universal System Exclusive Messages" gebildet wird, wird zur Übermittlung speziellerer Daten (Cue-Lists, Punch Points usw.) genutzt.
Eine "MTC Short Message" besteht aus acht Statusbytes "F1H" und acht Datenbytes. Zur Erkennung der "Abspielrichtung" werden die Datenbytes durchnummeriert. Da acht Bytes nummeriert werden müssen, werden dafür drei Bits benötigt. (Der achte Wert des Binär-Systems ist "0111") . Im MTC-Datenbyte folgen die Nummerierungsbits direkt dem höchstwertigsten Bit (welches natürlich wieder nicht gesetzt sein darf).
Demzufolge bleiben zur eigentlichen Datenübertragung noch vier Bit pro Byte übrig, mit denen jedoch nur 16 verschiedene Werte dargestellt werden können. Da das für diesen Zweck nicht genügt (eine Minute ist bekanntermaßen bereits 60 Sekunden lang...), werden jeweils zwei Datenbytes zusammengefasst und "genibbelt". Der daraus entstehende 8 Bit-Wertebereich (= 256 Werte) ist allerdings etwas zu groß. Die nicht benötigten Bits haben deshalb entweder Sonderfunktionen oder sind für zukünftige Anwendungen reserviert.
Im Detail sieht eine MTC Short Message binär dargestellt folgendermaßen aus:
MTC Short Message | |||
---|---|---|---|
(1. Byte) | (2. Byte) | Funktion | |
Statusbyte F1H | "Durchnummerierung" der Datenbytes | "Datenteil" des Datenbytes | |
11110001 | 0000 | yyyy | Frame Zähler low Nibble |
11110001 | 0001 | xxxy | Frame Zähler high Nibble |
11110001 | 0010 | yyyy | Sekunden Zähler low Nibble |
11110001 | 0011 | xxyy | Sekunden Zähler high Nibble |
11110001 | 0100 | yyyy | Minuten Zähler low Nibble |
11110001 | 0101 | xxyy | Minuten Zähler high Nibble |
11110001 | 0110 | yyyy | Stunden Zähler low Nibble |
11110001 | 0111 | xzzy | Stunden Zähler high Nibble |
Dabei haben die Variablen folgende Bedeutung :
x = für zukünftige Zwecke reservierte Datenbits; diese dürfen nicht gesetzt werden
y = "echte" Datenbits, in ihnen ist die genaue Zeitreferenz angegeben
z = Zwei Datenbits zur Definition des Zeitcode-Typus nach folgendem Schema:
'00' = 24 Frames / Sekunde
'01' = 25 Frames / Sekunde
'10' = 30 Frames / Sekunde (Drop-Frame)
'11' = 30 Frames / Sekunde (Non-Drop)
Als Beispiel sei hier die Zeit "01:28:49:20" im "30 frames non drop"-Format in hexadezimaler Form angegeben:
F1H 04H F1H 11H F1H 21H F1H 33H F1H 4CH F1H 51H F1H 61H F1H 76H
Da "MTC Short Messages" ausschließlich kontinuierlich gesendet werden - während das System "läuft" - sind sie nicht geeignet, z.B. in einer Pause (d.h., das System ist gestoppt) Zeitmarken zur Positionierung von z.B. Tonbandmaschinen zu senden. Für derartige Anwendungen werden die "MTC Full Messages" benötigt.
MTC "Full Messages" werden als "Real Time Universal System Exclusive Messages" übermittelt. Sie werden nicht kontinuierlich gesendet und dienen in erster Linie dazu, "Offline"-Zeitmarken zu übermitteln. Die Datenverschlüsselung der eigentlichen Zeitangabe erfolgt wie bei der Short Message, auch wenn hier das "Nibbelizing" entfällt, da die Datenbytes nicht nummeriert werden. Eine derartige "Full Message" sieht typischerweise so aus:
F0H 7FH xxH 01H 00H hrH mnH scH frH F7H
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
(1) = Statusbyte "Sysex"
(2) = Realtime Universal Sysex ID
(3) = "Kanal", z.B. 7FH für alle angeschlossenen Geräte
(4) = "Long Form Timecode Message" ID
(5) = Sub-lD "Full Time Code Message"
(6) = Datenbyte für Stunden und Format (Siehe MTC "Short" Form)
(7) = Datenbyte für Minuten
(8) = Datenbyte für Sekunden
(9) = Datenbyte für Frames
(10) = EOX
Bei diesen "Timecode Messages" stehen noch diverse andere Sub-ID´s (5) zur Verfügung, deren Aufgaben sehr speziell auf den Post-Production-Bereich zugeschnitten sind. Sie sollen hier keine weitere Erläuterung erfahren, da es sich dabei um ein sehr komplexes Themengebiet handelt, welches im Rahmen diese "Guides" nicht vollständig erläutert werden kann.