banner System Messages
banner
Zum Beginn des Abschnittes Inhaltsverzeichnis
  Zum Beginn dieses Abschnittes Übersicht
Zum Beginn dieses Abschnittes Aufbau einer Nachricht
Zum Beginn dieses Abschnittes Übertragungsart
Zum Beginn dieses Abschnittes MIDI-Anwendungen
Zum Beginn dieses Abschnittes MIDI Implementation V 3.0
Zum Beginn dieses Abschnittes Running Status
Zum Beginn dieses Abschnittes XG-Modus
Zum Beginn dieses Abschnittes MIDI Delay
  Zum Beginn dieses Abschnittes MIDI Synchronisation
Zum Beginn des Abschnittes Software-Merkmale
Zum Beginn des Abschnittes Klang-Zuordnung
Zum Beginn des Abschnittes Drum-Zuordnung
Zum Beginn des Abschnittes Noten-Zuordnung
Zum Beginn des Abschnittes Zahlensysteme
Zum Beginn des Abschnittes MIDI Nachrichten
Zum Beginn des Abschnittes Channel Messages
Zum Beginn des Abschnittes Controller Messages
Zum Beginn des Abschnittes SysEx-Informationen
  Zum Beginn des Abschnittes Manufacturer-IDs
Zum Beginn des Abschnittes MIDI Implementation V 3.0
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) Übersicht
 
Allgemein

System Messages (FxH) beziehen sich nicht auf einen einzelnen Midikanal, sondern betreffen immer das ganze MIDI-System, wobei nicht alle angeschlossenen Geräte in der Lage sein müssen, diese zu interpretieren und man unterscheidet Realtime Messages, die innerhalb des Systems zeitliche Abläufe steuern und zeitlich unkritische Non Realtime Messages.

Eine detaillierte Übersicht finden Sie in der separaten Tabelle.

Der MIDI Time Code wird Abschnitt Synchronisation behandelt.

  Non Realime  
Tune Request  
System Reset  
Song Select  
Song Pointer Song Position Pointer
  Realtime
MIDI Clock
Commands Start
Stopp
Continue
MIDI Time Code Short Form
Active Sensing
Non Universal Manufacture-ID
 
Universal
Non-Commercial z.B. Forschung und Entwicklung
Non-Realtime z.B. GM, Sample Dump Standard
Realtime z.B. MIDI Time Code Full Format
Active Sensing

Eine besondere System Message ist Active Sensing, dabei handelt es sich um eine spezielle Meldung, die drei Mal pro Sekunde erzeugt wird, sofern keine MIDI-Daten übertragen werden und damit zur Überprüfung einer intakten MIDI-Verbindung verwendet werden kann. Unterbleibt innerhalb des Zeitintervalls von etwa 300 Millisekunden diese Meldung, geht das Empfangsgerät davon aus, dass die MIDI-Verbindung unterbrochen wurde und schaltet sämtliche noch eingeschalteten Noten ab, um Notenhänger zu vermeiden und initialisiert die Spielhilfen, es kann jedoch auch zu einer Fehlermeldung wie etwa „MIDI Communication Error“ kommen.

  Zum Beginn dieser Seite
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) Aufbau einer Nachricht
 
Bedeutung

Die System Exlusive Daten (F0H) sind innerhalb des MIDI-Systems sicherlich die mächtigsten, aber auch kompliziertesten Meldungen, da sie auch nur in sehr geringem Umfang genormt sind. Mit SysEx-Befehlen können auch Parameter eines Gerätes angesprochen werden, die über herkömmliche MIDI-Befehle nicht erreichbar sind und sie werden je nach Hersteller oft zur Beeinflussung von Klangdaten oder zur Steuerung von Effekten benutzt.

Kennung

Ein SysEx-Datenpaket muss immer mit F0H begonnen und mit F7H beendet werden.

Hersteller

Das zweite Byte einer SysEx-Nachricht stellt eine Herstellerkennung (Manufacturer-lD) oder eine universelle ID dar, die auch mehrstellig sein kann, wobei aber auch hier bei keinem Datenbyte das MSB gesetzt sein darf.

Eine detaillierte Aufstellung der Hersteller-IDs finden Sie in der separaten Tabelle.

Gerät

Das dritte und vierte Byte bilden Kennmarken für Geräte-Nummer und Modellbezeichnung (Device und Model ID). Während Hersteller-ID (z. B. Kawai mit 40H, Roland mit 41H, Korg mit 42H, oder Yamaha mit 43H) und Modell-ID fest zugeordnet sind, kann die sogenannte Device ID frei gewählt werden, wodurch es ähnlich wie bei MIDI-Kanälen möglich ist, zwei identische Geräte mit unterschiedlichen SysEx-Daten zu versorgen.

Eine Meldung, die beispielsweise mit F0H 41H 10H 42H beginnt, spricht ein Roland GS-Gerät mit Device-ID 16 an, wobei im Datenformat von Roland die Device-ID vor der Model-ID übermittelt wird. Dabei steht F0H für den Beginn einer SysEx-Meldung, 41H für die Hersteller-ID 65 von Roland, 10H für wählbare die Device-ID 16 und 42H für die Model-ID eines Gerätes im GS-Format.

Universal-ID

Die universellen IDs 7DH bis 7FH anstelle der Hersteller-ID als zweites Byte werden für genormte Aufgaben eingesetzt. Universal Non-Comercial (7DH) wird derzeit eher nicht genutzt, Universal Non-Realtime (7EH) wird jedoch beispielsweise zur Steuerung von General MIDI-Equipment oder für den Identity Request (F0H 7EH DEV 06H 01H F7H) genutzt, um Geräten nähere Informationen wie beispielsweise Software-Version zu entlocken und findet auch beim Sample Dump Standard (SDS) Anwendung.

Universal Realtime (7FH) wird bei der Echtzeitsteuerung mittels des MIDI Time Codes (MTC) verwendet.

GS-Reset

Um ein Um ein GS-kompatibles Gerät in den GS-Modus zu bringen, wird mit F0H 41H yyH 42H 12H 40H 00H 7FH 00H 41H F7H ein GS-Reset übermittelt, wobei „y“ dabei für eine frei wählbare Device-ID steht. Um in den normalen Betriebszustand zurückzukehren verwendet man den Befehl F0H 41H yyH 42H 12H 40H 00H 7FH 7FH 42H F7H (GS-ReReset), der jedoch nicht von allen Geräten korrekt interpretiert wird. Bei derartigen Geräten hilft eventuell ein weiteres Senden des GS-Resets mit geänderter ID oder nur noch ein Aus- und wieder Einschalten.

GM-Reset

Durch Senden des Befehls GM-Reset F0H 7EH 7FH 09H 01H F7H für Enter GM-Modus, bzw. F0H 7EH 7FH 09H 00H F7H für Exit GM-Modus kann ein GS-kompatibles Gerät unter Umständen in einen Zustand versetzt werden, in dem die GS-Fähigkeiten nicht mehr zur Verfügung stehen und GM-Reset sollte daher an ein GS-kompatibles Gerät nur in Ausnahmefällen gesendet werden.

Zum Beginn dieser Seite
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) Übertragungsart
 
Übersicht

Prinzipiell unterscheidet man bei der Datenübertragung zwischen zwei Arten, einer Einwegübertragung (One Way) und einer wechselseitigen Übertragung mit Empfangsbestätigung (Hand Shake) hauptsächlich für den Austausch kompletter Speicherinhalte.

Bei der wechselseitigen Übertragung werden die Speicherinhalte in kleine einzeln übertragene Datenblöcke zerlegt und das Empfangsgerät übermittelt nach jedem empfangenen Block eine Bestätigung über den korrekten Empfang oder bei Fehlern eine Aufforderung zum nochmaligen Senden des Blocks an das Sendegerät. Erst nach einer Bestätigung über den erfolgreichen Empfang des vorangegangenen Datenblocks wird der nächste Block übertragen. Nachdem diese Art des Datenaustausches relativ aufwendig ist, wird für nahezu alle Anwendungen das schnellere und unkompliziertere One Way Verfahren gewählt.

One Way

Für die Einweg-Datenübertragung gibt es mit RQ1 (11H) und DT1 (12H) zwei genormte Befehle, wobei RQ1 (Request Data Comand) eine Aufforderung zum Senden näher zu spezifizierter Daten darstellt und DT1 (Data Set Comand) dem Empfänger die Anweisung zur direkten Verarbeitung der folgenden Daten gibt.

Aufbau

Ein komplettes Data-Set Commando besteht beispielsweise aus F0H  41H  DEV  MDL  12H  xxH ... yyH ...  CS  F7H und bedeutet:

F0H     Statusbyte für den SysEx-Beginn
41H     Hersteller-lD 65 (Roland)
DEV     Device lD (z.B für Roland-Geräte werksseitig 10H)
MDL     Model-lD (z.B. 42H für GS-Geräte)
12H     Command-lD für Data Set
xxH     Adresse
...     
yyH     Wert
...     
CS      Checksumme (Prüfsumme)
F7H     Statusbyte EOX (End Of Exclusive)

Die ersten fünf Bytes einer solchen Nachricht beinhalten eine genaue Definition der SysEx-Meldung und werden als Header (Kopf) bezeichnet, die folgenden Bytes stellen mit der zumeist mindestens aus drei Datenbytes bestehenden Adresse und dem, aus einem oder mehreren Datenbytes bestehenden Wert des Parameters, den Body (Körper) dar, gefolgt von Prüfsumme und EOX.

Nibbles

Zur Erzielung höherer Werte als 128 für einzelne Parameter, die mit nur einem Datenbyte nicht dargestellt werden können, ist es möglich, eine Datencodierung in Form sogenannte Nibbles anzuwenden, indem man das Byte in zwei Hälften (Nibbles) mit jeweils vier Bits teilt. Diese Nibbles werden nun als die vier niederwertigeren Bits in normale Datenbytes eingebunden und als zwei Datenbytes übertragen.

Beispielsweise darf der Wert 255 (11111111) in dieser Form nicht dargestellt werden, da das MSB nicht gesetzt sein darf, sodass eine genibbelte Übertragung in der Form 00001111 00001111 gewählt wird.

 

Nachteile dieses an sich recht einfachen Verfahrens sind allerdings einerseits dass pro Byte drei Bits nicht genutzt werden, wodurch die Datenübermittlung länger dauert und andererseits die Reihenfolge der Nibbles nicht immer genormt ist. Jenes Byte, welches die vier niederwertigen Bits des ursprünglichen 8-Bit-Bytes enthält wird als LOW Nibble bezeichnet, das mit den vier höherwertigeren Bits nennt man HIGH Nibble. Je nach Reihenfolge der Nibbles gibt es also zwei mögliche Datenübertragungsarten, die gemäß der Reihenfolge der beiden Nibbles als High-Low oder Low-High bezeichnet werden, wobei normalerweise das LOW Nibble zuerst übermittelt.

Beispielsweise kann ein imaginäres 8-Bit-Datenbyte 10111010 als High Low Nibbles in der Form 00001011 00001010 und als Low High Nibbles 00001010 00001011 dargestellt werden. In hexadezimaler Darstellung ergibt ein Nibbeln von DEH 23H A9H 89H bei der Übertragungsform Low-High die Zeichenkette 0EH 0DH 03H 02H 09H 0AH 09H 08H und man erkennt, dass die einzelnen Bytes in der Mitte getrennt werden und den Hälften jeweils eine 0 vorangestellt wird.

Checksum

Checksummen, auch Prüfsummen genannt, müssen bei jeder SysEx-Meldung direkt vor dem EOX übermittelt werden und können zur Kontrolle einer fehlerfreien Datenübertragung dienen. Eine Prüfsumme wird auf eine bestimmte Weise aus den Daten errechnet, wobei diese Berechnung sowohl von dem sendenden, als auch vom empfangenden Gerät getrennt voneinander durchgeführt wird. Die Ergebnisse werden miteinander verglichen und die übermittelten Daten nur dann beachtet, wenn die beiden Summen übereinstimmen. Die Roland-Prüfsumme muss, wenn man sie zur Summe aller Adressen und Daten hinzuaddiert, eine Binärzahl ergeben, deren sieben niederwertigere Bits nicht gesetzt sind.

In dem folgenden Beispiel benötigt die SysEx-Meldung F0H 41H 10H 42H 12H 40H 10H 16H 58H xxH F7H die Prüfsumme xxH, für deren Berechnung sämtliche Werte mit Ausnahme des Headers und des EOX-Bytes F7H addiert werden: 64 (40H) + 16 (10H) + 22 (16H) + 88 (58H) ergibt 190, wobei deren sieben niederwertigere Bits nicht gesetzt sind, entsprechen 128 oder einem Vielfachen (etwa 256, 384 oder 512) davon. Daher rechnet man um auf die Prüfsumme zu kommen 256 (100H) minus 190 (BEH) ergibt 66 (42H).

 

Die richtige Prüfsumme erhält man auch wenn man die Werte für die Adressen- und Datenbytes einzeln von 128 (80H) abzieht und im Fall einer negativen Zahl diese vom nächstgrößeren Vielfachen von 128 (80H) abzieht.

In einer einfacheren mathematischen Form ausgedrückt, wird zur Berechnung der Prüfsumme die Summe aller Adressen- und Datenwerte durch 128 dividiert und der Rest aus dieser Division von 128 abgezogen.

 

In MS-Excel beispielsweise würde die Formel lauten: =128-REST(Wert1+Wert2+Wert3+Wert4+.....;128).

Viele Sequenzerprogramme aktueller Generation berechnen diese Prüfsummen automatisch und nehmen bei jeder Werteänderung entsprechende Korrekturen vor.

Requenst Data

Request Data Comand (RQ1), das zweite SysEx-Kommando (11H) dient der Abfrage bestimmter Daten und wird zur Übertragung von Daten auf ein anderes Gerät verwendet. Der Aufbau einer solchen Nachricht ist dem DT1 Befehl sehr ähnlich, wobei hier allerdings anstatt des in diesem Fall phnedies unbekannten Wertes mit der Größe (Size) die zu erwartende Anzahl an Bytes eines Wertefeldes angegeben.

Als Beispiel für ein Request Data Comand erhalten wir durch Senden der Zeichenkette F0H 41H 10H 42H 11H 40H 30H 00H 00H 00H 20H 70H F7H an das Roland-Gerät SC-55 Informationen über die unter der Adresse 40H 30H 00H abgelegten Betriebssoftware-Version, wobei sowohl die Adresse als auch die Größe mit jeweils drei Byte angegeben werden.

Parameter ansprechen

Bei manchen Geräten können nicht alle Parameter einzeln angesprochen werden, beispielsweise lassen sich oft die im Display dargestellten Werte nicht einzeln, sondern nur für das Display insgesamt verändern.

Zum Beispiel kann jeder Displaypunkt einer Matrix von 16x16 Punkten (Dots) eine eigene Adresse (z.B. 10H 00H 0FH für links unten) haben, aber nicht einzeln angesprochen werden. In einem solchen Fall folgen der Startadresse entsprechend viele (in diesem Fall 64) Datenbytes, die dann den Folgeadressen automatisch zugeordnet werden.

 

In MIDI-Implementationen von Roland sind solche nicht einzeln ansprechbare Folge- oder auch Offsetadressen mit einem "#" gekennzeichnet. Start- und Offset-Adressen findet man zuweilen jedoch auch bei zusammengehörenden Parametergruppen, wo die Offsets aber oft einzeln angesprochen werden können. Im folgenden Beispiel für das Erzeugen einer Grafik im Display eines Roland-Gerätes haben die Werte der Zeichenkette F0H  41H  10H  45H  12H  10H  00H  00H  xxH ... xxH  yyH  F7H folgende Bedeutung:

F0H     SysEx-Beginn
41H     Hersteller-ID (Roland)
10H     Device-ID
45H     Modell-ID (Roland SC-55)
12H     Command ID (Data Set)
10H     Start Adress Dot (Display)
00H     Start Adress Dot (Display)
00H     Start Adress Dot (Display)
xxH     es folgen 64
...
xxH     Datenbytes
yyH     Prüfsumme
F7H     EOX

Dump

Unter einem MIDI-Dump versteht man das Abwerfen von MIDI-SysEx-Daten eines Sendegerätes zumeist in größeren Blöcken, beispielsweise zum Abbilden eines Speicherbereiches (etwa für ein Klangprogramm), um diese Daten zu einem späteren Zeitpunkt wieder verfügbar zu haben (z.B. als Datensicherung oder um vor Abspielen eines Songs entsprechende Klangprogramme an das Soundmodul zu senden). Je nach Gerät stehen oftmals verschiedene Möglichkeit zur Ausführung von Dumps, beispielsweise Dump All, Dump Temporary, oder Dump Patch zur Verfügung, wobei ein Dump nur von dem Gerät korrekt ausgeführt wird, für das er bestimmt ist und bei unbedachter Anwendung ein ungewolltes Überschreiben des Speicherbereiches zur Folge haben kann.

Für das Senden und Empfangen von SysEx-Meldungen muss auch gewährleistet sein, dass sowohl auf dem Sende- als auch auf dem Empfangsgerät gegebenenfalls die Funktion SysEx RX/TX auf ON gesetzt und die Device-ID richtig eingestellt ist. Auch Datenmenge und Übertragungsgeschwindigkeit sind zu beachten und sämtliche Zusatzfunktionen wie Midi Soft Thru, Active Sensing, MIDI-Clock Out und andere sollten während eines Dumps abgeschaltet sein. Darüber hinaus sind manche Midi-Thru-Boxen, Filter, Patchbays und MIDI-Merger nicht in der Lage, Dumps richtig weiterzuleiten oder es können SysEx-Daten von derartigen Geräten ausgefiltert werden.

Zum Beginn dieser Seite
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) MIDI-Anwendungen
 
Allgemein

Die folgenden beiden Erweiterungen der herkömmlichen MIDI-Befehle zeigen, dass MIDI auch außerhalb des eigentlichen Musikbereiches zu verwenden ist.

Show Control

MIDI Show Control (MSC) findet beispielsweise zur Ablaufsteuerung komplexer Lichtanlagen bei Großveranstaltungen oder für hydraulische Hebeanlagen Verwendung und ist folgendermaßen aufgebaut: F0H 7FH (DEV) (MSC) (COMMAND-FORMAT) (COMMAND) (DATA) F7H, wobei die ersten zwei Bytes diese Zeichenkette als Universal Realtime System Exclusive Daten definieren.

Nach der Device-ID für das Zielgerät dient das vierte Bit der Identifizierung als MIDI Show Control Message und muss dafür den Wert 02H haben. COMMAND-FORMAT und COMMAND sind dabei die speziellen Befehlsformen und deren nähere Definition, wobei manche Commands die nachfolgende DATAs benötigen, andere wiederum nicht.

Machine Control

Ebenfalls ein erweitertes MIDI-Protokoll MIDI Machine Control (MMC) welches zum Beispiel der Steuerung von Aufnahme- und Produktionswerkzeugen wie Harddisc-Recordingsystemen oder digitalen Bandmaschinen dient.

Der Datenaufbau ist mit F0H 7FH (DEV) (MCC/MCR) (COMMANDS/RESPONSES...) F7H ähnlich dem von MIDI Show Control, wobei das vierte Byte jedoch zwei unterschiedliche Werte haben kann und damit zwischen Machine Control Command (MCC) mit dem Wert 06H und Machine Control Response (MCR) mit dem Wert 07H unterschieden werden kann. Bei MCC handelt es sich dabei um die Anweisung an ein Gerät und unter MCR versteht man dabei die Reaktion eines angesprochenen Gerätes, (etwa auf ein vorangehendes MCC), welche mit den Befehlen DATA SET DT1 (12H) und REQUEST DATA RQ1 (11H) innerhalb des Roland SysEx-Formats verglichen werden kann.

MMC- Commands  
MMC Command
01H Stop
02H Play
04H Fast Forward
05H Rewind
06H Record Strobe
07H Record Exit
08H Record Pause
0CH Command Error Reset
0DH MMC Reset
Zum Beginn dieser Seite
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) MIDI Implementation V 3.0
 
Anwendung

Darüber hinaus gibt es je nach Hersteller und Gerät eine Vielzahl weiterer unterschiedlicher mehr oder weniger aufwändige SysEx-Meldungen, deren Bedeutungen meist in den Manuals der jeweiligen Geräte näher erläutert sind.

Im GS-Standard sind viele SysEx-Adressen normiert, wobei es notwendig, diese mit dem GS-Reset zu beginnen und die Detailveränderungen dann durch Data Sets (DT1 = 12H) zu spezifizieren. Für Änderungen, die anstelle von SysEx-Daten auch über RPN/ NRPN erreicht werden können, sind die Controller zu bevorzugen, da diese einfacher zu erzeugen sind und die Meldungen weniger Bytes benötigen. An das Ende des Datenblocks sollte ein GS-ReReset-Befehl (F0H 41H yyH 42H 12H 40H 00H 7FH 7FH 42H F7H) gesetzt werden.

Grundsätzlich sollte eine GS Datei nicht mit dem Dump eines GS-kompatiblen Gerätes oder mit dem General MIDI Reset beginnen.

Tabelle

Eine Liste der nach dem Standard V3 normierten SysEx-Meldungen finden Sie in der separaten Tabelle.

Zum Beginn dieser Seite
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) Running Status
 
Definition

Bei dem sogenannten Running Status handelt es sich um eine relativ spät ins MIDI-Protokoll aufgenommene Regelung der Datenübertragung bei der ein Statusbyte nicht mehrmals übertragen wird, solange der der Status nicht gewechselt und der MIDI-Kanal beibehalten wird.

Anwendung

Möchte man z.B. die Noten „D" und „E" einschalten wird das Statusbyte 9nH nur einmal gesendet und es folgen direkt danach die vier Datenbytes der beiden Noten.

Bei dem Beispiel 92H  3CH  7FH  40H  7FH  43H  7FH  E2H  02H  40H  49H  6BH  D2H  05H  0AH  12H wird auf MIDI-Kanal 3 ein Fortissimo C-Dur Akkord in mittlerer Lage ein wenig nach oben gezogen und ihn dann mit Channel Pressure moduliert, wobei die einzelnen Bytes folgende Bedeutung haben:

 

92H     Statusbyte Note On auf Kanal 3
3CH     Note Nummer 60 (mittleres C)
7FH     Velocity 127 für diese Note (Fortissimo)
40H     Note Nummer 64 (mittleres E)
7FH     Velocity 127 für das E (Fortissimo)
43H     Note Nummer 67 (mittleres G)
7FH     Velocity 127 für das G (Fortissimo)
E2H     Statusbyte Pitch Bending auf Kanal 3
02H     die verschiedenen Werte dafür
40H     werden bei Bewegung
49H     des Reglers
6BH     kontinuierlich übermittelt
D2H     Statusbyte Monophonic Aftertouch auf Kanal 3
05H     die verschiedenen Werte dafür
0AH     werden beim Auslösen des Aftertouch
12H     kontinuierlich übermittelt

Abschalten

Zum Abschalten wird mit B2H 7BH 00H die Controller/Auxiliary Message All Notes Off gesendet, wodurch auch alle Spielhilfen (z.B. Aftertouch, Modulation, oder Pitch Bending) wieder auf den Normalwert zurückgesetzt werden, wobei der Normalwert wie beispielsweise beim Pitch Bending nicht immer „0“ beträgt.

Der korrektere Weg als der Befehl All Notes Off ist es natürlich, mit 82H  3CH  40H  40H  11H  43H  7AH  E2H  40H  D2H  00H separat zuerst Aftertouch und Pitchbending in den Ruhezustand zu setzen und dann die entsprechen Note-Off Befehle zu senden.

 

82H     Statusbyte Note Off auf Kanal 3
3CH     Note Nummer 60 (mittleres C)
40H     Velocity 64 für diese Note (mittlerer Wert)
40H     Note Nummer 64 (mittleres E)
11H     Velocity 17 für das E (niedriger Wert)
43H     Note Nummer 67 (mittleres G)
7AH     Velocity 122 für das G (hoher Wert)
E2H     Statusbyte Pitch Bending auf Kanal 3
40H     Wert 64 (Mittelstellung des Pitch Bending Reglers)
D2H     Statusbyte Monophonic Aftertouch auf Kanal 3
00H     Wert 0 für keinen Aftertouch

Zum Beginn dieser Seite
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) XG-Modus
 
Allgemein

Wie für der GS-Modus von Roland verfügt auch der XG-Modus von Yamaha über spezielle SysEx-Befehle.

XG-Modus

Eingeschaltet wird der XG-Modus z.B. mit dem Befehl F0 43 10 4C 00 00 7E 00 F7.

XG-Reset

Der Befehl F0 43 10 4C 00 00 7F 00 F7 führt ein XG-Reset aus und setzt alle Parameter auf die Werkseinstellungen zurück.

Drums

Die Zeichenkette F0 43 10 4C 00 00 7D 00 F7 macht einen Reset von Drum Setup 1 und F0 43 10 4C 00 00 7D 01 F7 einen Reset von Drum Setup 2.

TG300B

Der Befehl 0 41 10 42 12 40 00 7F 00 41 F7 schaltet einen zum Roland GS-Modus kompatiblen sogenannten TG300B-Modus ein.

GM-Modus

Der generelle Befehl F0 7E 7F 09 01 F7 schaltet wieder auf den General MIDI-Modus zurück.

Zum Beginn dieser Seite
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) MIDI Delay
 
Definition

Wenngleich so gut wie jeder Sequenzer solche Verzögerungen generieren kann und es darüber hinaus auch eigenständige Geräte und Programme dafür gibt, werden unter diesem Begriff üblicherweise die in MIDI-Systemen oftmals ungewollen auftretenden Verzögerungen zusammengefasst.

Praxis

Da MIDI-lnformationen grundsätzlich seriell, also nacheinander, übertragen werden, können prinzipiell niemals zwei Noten wirklich gleichzeitig erklingen und bei einer Übertragungsrate von bis zu 31.250 Bits pro Sekunde beträgt die Verzögerung zwischen zwei Noten im günstigsten Fall dann, wenn durch datenreduzierende Maßnahmen (Running Status) die notwendige Datenmenge zum Erzeugen einer Note auf zwei Bytes begrenzt werden kann, etwa zwei Drittel einer Millisekunde.

Derart geringe Verzögerungen zwischen zwei Noten sind zwar zu vernachlässigen und können auch von den feinsten Ohren nicht wirklich wahrgenommen werden, es ist jedoch nicht immer möglich, den Running Status nicht benutzt, zum Beispiel wenn Noten auf unterschiedlichen MIDI-Kanälen übermittelt werden, sodass die Verzögerung auf etwa eine Millisekunde und bei der Übertragung zusätzlicher Daten vielleicht auf einige Millisekunden ansteigt, sodass durch geschickte Verteilung und Eliminierung unnotwendiger Daten darauf geachtet werden sollte, das MIDI-Delay in einem akzeptablen Rahmen zu halten.

Ursachen

Neben diesem echten und unvermeidlichen MIDI-Delay können weitere Verzögerungen durch das Hintereinanderschalten mehrerer MIDI-Geräte, das sogenannte Daisy Chaining entstehen das wie im Kapitel Hardware beschrieben, durch Einsatz einer MIDI-Ttru-Box vermieden werden kann.

Eine weitere Ursache von Verzögerungen kann in der Kapazität des Prozessors, dem verwendeten Betriebssystem, der Speicherausstattung, der Organisation der Datenverarbeitung, oder der verwendeten Analogie zur Befehlsumsetzung gelegen sein und kann vom Anwender außer durch Datenreduktion in der Regel nicht wirklich beeinflusst werden.

Zum Beginn dieser Seite
line_274.gif (217 Byte) tab_s036.gif (46 Byte)
    
pkt_q14.gif (157 Byte) MIDI Synchronisation
 
Übersicht

Oftmals ist es wünschenswert, zum Beispiel bei ton- und bildtechnisch orientierten Anwendungen, zwei oder mehrere Geräte, Bandmaschinen, Videorecorder, Harddisk-Recorder, Datenrecorder, Computer, Sequencer, Drum-Computer und andere, zueinander zeitgleich zu steuern und eine solche Koppelung versteht man unter dem Begriff Synchronisation.

Dafür bedient man sich je nach Anwendung einiger unterschiedlicher Formate wie beispielsweise dem MIDI Clock, Frequency Shift Keying (FSK), der Deutschen Industrie-Norm (DIN-Sync), Society Of Motion Picture and Television Engineers (SMPTE), Vertical Integrated Time Code (VITC), Longitudinal Time Code (LTC), oder dem MIDI Time Code (MTC). Die beiden MIDI-bezogenen Standards sind dabei MIDI Clock und MIDI TIME CODE (MTC).

MIDI Clock

Dafür bedient man sich je nach Anwendung einiger unterschiedlicher Formate wie beispielsweise dem MIDI Clock, Frequency Shift Keying (FSK), der Deutschen Industrie-Norm (DIN-Sync), Society Of Motion Picture and Television Engineers (SMPTE), Vertical Integrated Time Code (VITC), Longitudinal Time Code (LTC), oder dem MIDI Time Code (MTC). Die beiden MIDI-bezogenen Standards sind dabei MIDI Clock und MIDI TIME CODE (MTC).

Funktion

Die Fähigkeiten zur Interpretation synchronisationsbezogener Daten sind je nach Gerät sehr unterschiedlich und reichen vom ausschließlichen Erkennen des MIDI-Clock (F8H) und Ignorieren von START (FAH) und STOP (FCH), bis hin zu umfassend ausgestatteten Modellen, die auch zum Beispiel mit einem Continue-Befehl (FBH), oder einem Song Select (F3H) bzw. Song Position (F2) umgehen können und man damit in der Lage ist, Songs an beliebiger Stelle zu starten.

Format

Die ersten Synchronisations-Standards entstanden bei der Filmnachvertonung und verwendet daher als Zeiteinheit das Frame (Bild), wobei Filme international mit unterschiedlichen Bildfrequenzen erstellt werden, wodurch es notwendig ist, das benutzte Format (24, 25, oder 30 Bilder pro Sekunde oder das 30er Dropframe-Format) anzugeben.

Time Code

Während man für ein SMPTE-bezogenes Synchronisationsverfahren eine absolute Zeitbasis als genaue Referenz benötigt, handelt es sich beim MIDI Time Code (MTC) um ein aufwendigeres Verfahren mit einen absoluten Zeitcode als Synchronisationsbezug, der entweder in Form universeller SysEx-Daten oder in Form von System Messages übermittelt wird und wird beispielsweise als 01:32:49:13 dargestellt.

Das bedeutet für eine Abtastfrequenz von 30 Bildern pro Sekunde eine Stunde, 32 Minuten, 49 Sekunden und 13/30 (Frames) Sekunden. Bei MTC wird diese Zeitreferenz viermal pro Frame durch eine sogenannte Short Message in Form von System Meldungen bestehend aus acht Statusbytes F1H und acht Datenbytes übermittelt, eine sogenannte Full Message, welche mittels Universal System Exclusive Messages gebildet wird, dient zur Übermittlung speziellerer Daten wie etwa Cue-Lists oder Punch Points.

MTC Short Message

Zur Erkennung der Abspielrichtung werden bei MTC Short Message die Datenbytes durchnummeriert. Für diese Nummerierung werden drei Bits unmittelbar hinter dem höchstwertigen Datenbit, welches natürlich nicht gesetzt sein darf, verwendet, beispielsweise 0111xxxx für den achten Wert.

Da mit den verbleibenden vier Bit pro Byte nur 16 verschiedene Werte dargestellt werden können und das zur Kennzeichnung zum Beispiel von 60 Sekunden nicht ausreicht, werden jeweils zwei Datenbytes zusammengefasst und genibbelt, wodurch ein mit 8 Bit (256 Werte) eigentlich zu großer Wertebereich entsteht, dessen nicht benötigten Bits deshalb entweder Sonderfunktionen haben oder für zukünftige Anwendungen reserviert sind.

Bei der folgenden binären Darstellung einer MTC Short Message steht die Variable „x“ für zukünftige Zwecke reservierte Datenbits und darf nicht gesetzt werden, „y“ stellt jene Datenbits dar, in denen die genaue Zeitreferenz angegeben ist und die beiden Datenbits „z“ dienen der Definition des Zeitcode-Typus nach dem Schema:

 

00 = 24 Frames pro Sekunde
01 = 25 Frames pro Sekunde
10 = 30 Frames pro Sekunde (Drop-Frame)
11 = 30 Frames pro Sekunde (Non-Drop)

 
B 1 B 2 Dat Funktion
11110001 0000 xxxy Frame Zähler low Nibble
11110001 0001 yyyy Frame Zähler high Nibble
11110001 0010 xxyy Sekunden Zähler low Nibble
11110001 0011 yyyy Sekunden Zähler high Nibble
11110001 0100 xxyy Minuten Zähler low Nibble
11110001 0101 yyyy Minuten Zähler high Nibble
11110001 0110 xzzy Stunden Zähler low Nibble
11110001 0111 yyyy Stunden Zähler high Nibble
 

Dabei steht B 1 für das erste Byte (Statusbyte F1H), B2 für das zweite Byte mit der Durchnummerierung der Datenbytes und Dat für den Datenteil.

Hexamal würde die Zeit 01:28:49:20 im 30-Frames non drop-Format als F1H 04H F1H 11H F1H 21H F1H 33H F1H 4CH F1H 51H F1H 61H F1H 76H dargestellt.

MTC Full Message

MTC Short Messages werden ausschließlich kontinuierlich nur während eines laufenden Systems gesendet werden und können nicht zum Beispiel für die Meldung von Pausen, Stopps oder Zeitmarken verwendet werden.

Dafür werden, in erster Linie zur Übertragung von Offline-Zeitmarken, sogenannte  MTC Full Messages benötigt, welche als Real Time Universal System Exclusive Messages übermittelt und nicht kontinuierlich gesendet werden.

Aufbau

Die Zeitangabe erfolgt bei MTC Full Messages ähnlich wie bei Short Messages, wobei jedoch das Nibbeln entfällt, da die Datenbytes nicht nummeriert werden.

Bei einer typischen Full Message wie F0H  7FH  xxH  01H  00H  hhH  mmH  ssH  ffH F7H stehen F0H für das Statusbyte (SysEx), 7FH für den Realtime Universal Sysex ID, xxH für den Kanal (z.B. 7FH für alle angeschlossenen Geräte), 01H für den Long Form Timecode Message – ID, 00H für den Sub-lD (Full Time Code Message), hhH für Stunden und Format (gemäß MTC Short Form), mmH für Minuten, ssH für Sekunden, ffH für Frames und F7H ist das EOX (Ende swe SysEx-Daten). Daneben stehen noch diverse andere Sub-IDs für sehr spezielle Aufgaben hauptsächlich im Post-Production-Bereich zur Verfügung.

Zum Beginn dieser Seite
E-Mail an musik-steiermarkZur Homepage von musik-steiermarkEine Ebene höherZurück in der selben EbeneVorwärts in der selben Ebene

Letzte Änderung am 19. Oktober 2005
Copyright © 1997-2005 musik-steiermark
Alle Rechte vorbehalten

Information über musik-steiermark