Der online MIDI GuideLogo
Vorwort Inhaltsverzeichnis Downloads Links Contact

A9 DAS ROLAND SYSTEM EXCLUSIVE DATENFORMAT

ONE WAY und HANDSHAKE

Es gibt prinzipiell zwei mögliche Arten der Datenübertragung:


Die "Einwegübertragung" (One Way) und die "Wechselseitige Übertragung mit Empfangsbestätigung" (Hand Shake). Der Hand Shake Modus dient in erster Linie dem Austausch kompletter Speicherinhalte. Dabei werden die Speicherinhalte in kleine Datenblöcke zerlegt und einzeln übertragen. Nach jedem empfangenen Block übermittelt das Empfangsgerät dem Sendegerät eine Bestätigung über den korrekten Empfang oder eine Aufforderung, den Block nochmals zu senden, falls die Übertragung erfolglos war. Erst wenn das Sendegerät eine Bestätigung über den erfolgreichen Empfang des vorangegangenen Datenblocks erhalten hat, sendet es den nächsten Block. Diese Art des Datenaustausches ist relativ aufwendig und soll hier keine weitere Beachtung finden, da für nahezu alle Anwendungen das One Way Verfahren schneller und unkomplizierter ist. Genauere Angaben über den "Hand Shake"-Modus finden Sie in den MIDI-lmplementationen der entsprechenden Geräte.

DATA SET und DATA REQUEST

Bei der Einweg-Datenübertragung gibt es zwei genormte "Kommandos". Das eine Kommando stellt eine Aufforderung dar, bestimmte (näher zu spezifizierende) Daten zu senden (Request Data Comand RQ1 = 11H); das andere Kommando gibt dem Empfänger die Anweisung, die folgenden Daten direkt zu verarbeiten (Data Set Comand DT1 = 12H).

DATA SET DT1




Ein komplettes Data-Set Commando besteht aus folgenden Bestandteilen:

  F0H  41H  DEV  MDL  12H  xxH ... yyH ...  sum  F7H
(1) (2) (3) (4) (5) (6) ... (7) ... (8) (9)

Hierbei bedeuten :

(Nr.)Byte/Funktion
(1)Statusbyte Sysex Anfang
(2)Hersteller-lD 65 (= 41H)= ROLAND
(3)Device lD (z.B für ROLAND Geräte werksseitig 10H)
(4)Model-lD (z.B. 42H für GS-Geräte, 7CH für VS-880 usw.)
(5)Command-lD 12H = Data Set
(6)Adresse
(7)Wert
(8)Prüfsumme
(9)Statusbyte EOX ("End Of Exclusive")

Die ersten fünf Bytes einer solchen Nachricht werden auch als "Kopf" bzw. "Header" bezeichnet, da sie eine genaue Definition der Sysex-Meldung beinhalten. Die übrigen Bytes (mit Ausnahme des EOX) tragen die Bezeichnung "Body" (= Körper). Die Adresse (6) ist sozusagen der "Wohnsitz" eines Parameters. Sie ist im Einzelfall der jeweiligen MIDI-Implementation zu entnehmen. Normalerweise wird sie mit mindestens drei Datenbytes angegeben. Der (zu setzende) Wert (7) eines Parameters besteht - je nach Parameter - aus einem oder mehreren Datenbytes.

Nibbles

Da einige Parameter mehr als 128 Werte annehmen können, ist es nicht möglich, solche Werte mit nur einem Datenbyte darzustellen. Hier findet eine Datencodierung Anwendung, die sogenannte "Nibbles" nutzt. Die Idee, die sich dahinter verbirgt, ist recht einfach: angenommen, ein Parameter besitzt 8 Bit Auflösung, kann also 256 verschiedene Werte annehmen. Diese 256 Werte lassen sich aber nicht mit einem normalen Datenbyte übertragen, da dieses lediglich 128 Werte annehmen kann, weil sein MSB nicht gesetzt sein darf. Um also echte 8-Bit Datenbytes zu erzeugen, werden diese in zwei Hälften mit jeweils vier Bits geteilt. Diese Hälften erhalten die Bezeichnung "Nibbles". Diese Nibbles werden nun als die vier niederwertigeren Bits in ein normales Datenbyte eingebunden. Um beide Nibbles zu übertragen, benötigt man also auch zwei Datenbytes. Soll z.B. der Wert 255 (= 11111111) "nibbelized" übertragen werden, so geschieht das folgendermaßen:

00001111 00001111

Dieses eigentlich sehr einfache Verfahren hat allerdings zwei Nachteile. Einerseits werden drei Bits pro Byte nicht genutzt, so dass die Übertragung länger als nötig dauert, andererseits ist es leider nicht immer genormt, welche Reihenfolge die Nibbles haben. Normalerweise wird das Nibble, welches die vier niederwertigen Bits (des ursprünglichen 8-Bit-Bytes) enthält, zuerst übermittelt (dieses Nibble wird auch "LOW Nibble" genannt). Es gibt aber auch Ausnahmen.


Im Gegensatz zum "LOW Nibble" wird das Nibble, welches die vier höherwertigeren Bits enthält, "HIGH Nibble" genannt. Je nach Reihenfolge der Nibbles gibt es also zwei mögliche Datenübertragungsarten, die gemäß der Reihenfolge der beiden Nibbles "High-Low" oder "Low-High" heißen. Über die jeweils benutzte Möglichkeit sollte die Anleitung des Gerätes Auskunft geben.
Noch ein Beispiel:


Imaginäres 8-Bit-Datenbyte: 10111010
High Low Nibbles : 00001011 00001010
Low High Nibbles : 00001010 00001011

Besonders anschaulich wird das "Nibbelizing" in hexadezimaler Darstellung:
Sollen folgende Bytes "genibbelt" werden:

  DEH 23H A9H 89H

... so ergibt sich folgende Zahlenkette:

  0EH 0DH 03H 02H 09H 0AH 09H 08H

Wie man sieht, werden die einzelnen Bytes in der Mitte 'gespalten' und den Hälften jeweils eine "0" vorangestellt. Als Übertragungsform wurde im Beispiel "Low-High" gewählt.

Prüfsumme

Nachdem mit Adresse und dem dazugehörigen Wert die eigentliche Sysex-Meldung ihren Sinn erhalten hat, muss vor dem EOX eine Prüfsumme übertragen werden. Prüfsummen bilden eine Art Sicherheitskontrolle bei der Datenübertragung. Sie können darüber Aufschluß geben, ob die Daten fehlerlos übertragen wurden. Eine "Checksum", wie die englische Bezeichnung lautet, wird auf einem bestimmten Weg aus den Daten errechnet und direkt vor dem EOX gesetzt. Datensender und Datenempfänger führen diese Berechnung getrennt aus. Beide Ergebnisse werden miteinander verglichen, und nur wenn sie übereinstimmen, wird den übermittelten Daten Beachtung geschenkt. Die ROLAND Prüfsumme muss zur Summe aller Adressen und Daten hinzuaddiert eine Binärzahl ergeben, deren sieben niederwertigeren Bits nicht gesetzt sind.
Ein Beispiel:


Die Sysex-Meldung "F0H 41H 10H 42H 12H 40H 10H 16H 58H xxH F7H" benötigt die Prüfsumme "xxH". Um diese zu errechnen, müssen sämtliche Werte ausserhalb des "Headers" (und ausschließlich des EOX-Bytes F7H) addiert werden:

  40H + 10H + 16H + 58H = BEH
(64 + 16 + 22 + 88 = 190)

Binärzahlen, deren sieben niederwertigeren Bits nicht gesetzt sind, entsprechen '128' oder einem Vielfachen (256; 384;512;640...) davon. Also wird gerechnet:

  100H minus BEH = 42H
(256 minus 190 = 66)

Die benötigte Prüfsumme ist also dezimal "66" bzw. hexadezimal "42" (das obige Beispiel dient im übrigen dazu, den Part 10 eines ROLAND SoundCanvas SC-55 um zwei Oktaven nach oben zu transponieren).
Vereinfacht gesagt kann man die Adressen- und Datenbytes einzeln von "80H" (dezimal 128) abziehen, um die Prüfsumme zu errechnen. Kommt dabei eine negative Zahl heraus, müssen die Adressen- und Datenbytes von dem nächstgrößeren Vielfachen von "80H" abgezogen werden.


Drei weitere Beispiele zum Selbstrechnen:

  F0H 41H 10H 42H 12H 30H 01H 00H 1FH xxH F7H
F0H 41H 12H 3BH 12H 23H 13H 05H 07H 34H 18H yyH F7H
F0H 41H 06H 45H 12H 30H 20H 11H 1FH zzH F7H

(die Lösung steht ganz unten am Seitenende)

Cubase und andere Sequencer

Falls Sie einen Sequencer besitzen, der es ermöglicht Sysex-Daten zu übermitteln (z.B. Steinbergs "Cubase") müssen Sie bedenken, dass sich bei jeder Werteänderung auch die Prüfsumme ändert, d.h. sie muss ständig neu errechnet werden. Das genannt 'Cubase' ermittelt die Prüfsumme automatisch, es gibt aber auch Sequencerprogramme (Z.B. Emagics alter 'Notator'), die das nicht können. Falls Sie im Besitz eines solchen Programmes sind, müssen Sie in Verbindung mit ROLAND Geräten leider auf Echtzeit-Sysex-Arien verzichten. Auch bei Cubase Versionen "2.x" kann es Probleme geben. Das Programm ermittelt anhand der Hersteller- und der Model-lD, ob eine Prüfsumme errechnet werden muss oder nicht. Falls Ihr ROLAND Instrument neueren Kaufdatums als diese (alte) Cubase-Version sein sollte, ist dieses Modell aller Wahrscheinlichkeit nach noch nicht berücksichtigt worden. Falls es hier Schwierigkeiten gibt, sollten Sie das Programm "updaten" lassen. Bei Cubase Version. "3.0" treten diese Probleme nicht mehr auf, da die Berechnungsautomatik auch manuell aktiviert werden kann (und muss!). Noch aktuellere Versionen (SX..) haben damit keinerlei Probleme mehr. ROLAND Sequencer der MC-Serie ermitteln die Prüfsumme automatisch für alle ROLAND-Produkte. Hier muss an vorletzter Stelle lediglich ein beliebiges Byte gesetzt werden, dessen Wert dann in die Prüfsumme umberechnet wird.

DATA REQUEST RQ1

Das zweite Sysex-Kommando RQ1 (11H) dient der Abfrage bestimmter Daten. Es wird verwendet, um Daten aus einem Gerät in ein anderes zu übertragen. Der Aufbau einer solchen Nachricht ist dem eines DT1 Befehles sehr ähnlich, allerdings wird hierbei anstatt des (in diesem Fall sowieso unbekannten) Wertes die "Größe" (Size), also die zu erwartende Anzahl an Bytes eines Wertefeldes angegeben.

START und OFFSET Adressen

Bei einigen Geräten ist es nicht möglich, sämtliche Parameter einzeln anzusprechen. So kann man z. B. beim ROLAND Sound Canvas SC-55 die im Display dargestellten Werte nicht einzeln verändern, dieses ist nur für das Display insgesamt möglich, welches in der Lage ist, 16x16 Dots (Punkte) darzustellen.


Jeder Displaypunkt hat eine eigene Adresse ("Unten links" = 10H 00H 0FH), kann aber nicht einzeln angesprochen werden. In so einem Fall folgen der Startadresse entsprechend viele (in diesem Fall 64) Datenbytes, die dann automatisch den Folgeadressen zugeordnet werden. Solche Folge- oder auch Offsetadressen, die nicht einzeln angesprochen werden können, sind in den ROLAND MIDI-Implementationen mit einem "#" gekennzeichnet, z.B.:

  Startadresse   10H 00H 00H
Offsetadresse 10H 00H 01H #
10H 00H 02H #
...

Die Begriffe "Start" und "Offset"-Adressen findet man auch bei zusammengehörenden Parametergruppen. Hier können die Offsets aber oft einzeln angesprochen werden. Möchte man z. B. eine Grafik im Display des SC-55 erzeugen, so wäre folgender Daten-String dafür zuständig:


F0H 41H 10H 45H 12H 10H 00H 00H xxH ... xxH yyH F7H
(1) (2) (3) (4) (5) (6) (6) (6) (7) ... (7) (8) (9)

Hier bedeuten :

(Nr.)Byte/Funktion
(1)Sysex-Start
(2)Hersteller = ROLAND
(3)Dev-ID
(4)Model ID = SC-55 Display
(5)Command ID = Data Set
(6)Start Adress Dot Display
(7)(64 Datenbytes)
(8)Checksum
(9)EOX

Als Beispiel für ein Request Data Comand bleiben wir beim SC-55. Unter der Adresse 40H 30H 00H sowie deren Offsetadressen sind Informationen über die Betriebssoftware-Version des Gerätes abgelegt. Um diese zu bekommen, muss folgendes gesendet werden:

  F0H 41H 10H 42H 11H 40H 30H 00H 00H 00H 20H 70H F7H

Die Bedeutung der einzelnen Bytes soll an dieser Stelle nicht nochmals erklärt werden. Beachten Sie aber, dass sowohl die Adresse als auch die Size mit jeweils drei Byte angegeben wurden.

Sys-Ex Troubleshooting

Davon ausgehend, dass Sie sich bis zu dieser Stelle durchgearbeitet haben, ist festzustellen, dass Sie nunmehr die "Höhere MIDI-Schule" (erfolgreich?) absolviert haben, und in das normale Musikerleben entlassen werden können. Doch wie das nun einmal auch im wirklichen Leben so ist, geschieht das nicht ohne eine handvoll gutgemeinter Ratschläge... Die nun folgenden Tipps sind vielfach praxiserprobt und haben schon vielerlei Probleme zu lösen geholfen.



MIDI Dumps


Unter einem "MIDI-Dump" versteht man das Abwerfen von MIDI-Sysex-Daten eines Sendegerätes (z.B. Soundmodul) in ein Empfangsgerät (z.B. Sequencer). Ziel des Dumps ist es, eine Kopie der im Speicher des Sendegerätes befindlichen Daten ( z. B. Klänge) anzufertigen, um sie zu einem späteren Zeitpunkt wieder verfügbar zu haben (Datensicherungs-Prinzip).


Empfehlenswert ist es auch, bei der Arbeit mit Sequencern im 1. Takt eines Songs die (systemexclusiven) Klangdaten der benutzten Geräte unterzubringen, so dass auch in fünf Jahren oder mit fremden Geräten (natürlich desselben Typs) gewährleistet ist, dass der Song mit den korrekten Sounds arbeitet. Man sollte aber vor dem Abspielen eines solchen Songs prüfen, ob die im empfangenden Gerät enthaltenen Daten bereits anderweitig abgespeichert wurden, da sie sonst verloren gehen.


Viele Geräte bieten die Möglichkeit, verschiedene Dumps auszuführen ("Dump All", "Dump Temporary", "Dump Patch" u.s.w. ). Vergewissern Sie sich, nur den Dump zu nutzen, den Sie auch tatsächlich benötgen. Ein falscher Dump kostet im günstigsten Fall eine Menge Speicherplatz. Im ungünstigsten Fall haben Sie keinen der Sounds gespeichert, die Sie eigentlich speichern wollten.


Falls Sie sich nicht sicher sind, ob der Dump korrekt ausgeführt wurde, ändern Sie (nach dem Dump) am Sendegerät einen Klangnamen (z. B. "Qiano" anstatt "Piano") und schicken den Dump danach wieder zurück an das Intstrument. Falls der Klang bei erneutem Aufrufen (per Program-Change oder manuell) danach wieder "Piano" heißt, können Sie beruhigt sein. Ansonsten überprüfen Sie folgende Möglichkeiten:

Falls Ihr Sequencer beim Empfang des Dumps eine Fehlermeldung ausgegeben hat überprüfen Sie bitte, ob in der Bedienungsanleitung dazu eine Anmerkung vorhanden ist. In der Regel gibt es drei Ursachen für solche Fehlermeldungen:

Folgende Maßnahmen können Abhilfe schaffen:

Zum Kapitel Sysex-Programmierung könnte man noch sehr viel sagen. An dieser Stelle wollen wir aber dieses Kapitel beenden, um nicht zu einseitig zu werden. Falls Sie spezielle Probleme mit Sysex-Daten haben, scheuen Sie sich nicht, mit uns Kontakt aufzunehmen. Sie können den ROLAND-Customersupport unter folgender Hamburger Rufnummer erreichen:


34H 3CH 09H 47H

(Hier kommt die Lösung der Prüfsummen-Beispiele:
xxH=5DH; yyH=72H; zz=00H)