MIDI

Aus File Format
Wechseln zu: Navigation, Suche

Musical Instrument Digital Interface


MIDI-Header
Offset Länge Inhalt
HEX
Inhalt
BIN
Beschreibung
0x0000 1 Word (4 Bytes) 4D 54 68 64 (unwichtig) MThd Chunk-Kennung (MIDI Track Header)
0x0004 1 Word (4 Bytes) 00 00 00 06 (unwichtig) Länge des MIDI-Header Chunks. Dieser ist im Normalfall
immer 6 Bytes lang. Zur Länge zählen MThd und Längen-Wörter nicht.
0x0008 2 Bytes <NN NN> Das MIDI-File-Format. Es existieren 3 Formate.
MIDI-File-Format
Inhalt
HEX
Inhalt
BIN
Beschreibung
00 01 0001 MIDI-Datei enthält einen einzelnen Track (Spur)
00 02 0010 Mehrere Tracks, synchronisiert
00 03 0011 Mehrere Tracks, nicht synchronisiert
0x000A 2 Bytes <NN NN> Anzahl MIDI-Spuren (Tracks)
0x000C 2 Bytes <NN NN> Taktrate einer Viertelnote (Ticks pro Viertelnote)

Es folgen daraufhin die sogenannten Tracks (Spuren). Diese sind ebenfalls Chunk-basierend:

Track
Offset Länge Inhalt
HEX
Inhalt
BIN
Beschreibung
0x0000 4 Bytes 4D 54 72 6B MTrk MIDI Track Chunk
0x0004 4 Bytes Länge des Tracks in Bytes
(abzüglich der 8 Bytes für den Header und der Längeninformation)
0x0008 n Bytes Die Trackdaten. Aufeinanderfolgend jeweils eine Kombination
aus folgenden, bis Dateiende (siehe Länge des Tracks)
x bezeichnet den Kanal.
MIDI-Kommando
Inhalt
HEX
Inhalt
BIN
Länge Beschreibung
0x8x nn vv 1000xxxx 0nnnnnnn 0vvvvvvv 3 Bytes Note/Taste loslassen
n = Note v = Geschwindigkeit
0x9x nn vv 1001xxxx 0nnnnnnn 0vvvvvvv 3 Bytes Tastendruck
n = Note v = Geschwindigkeit
0xAx nn vv 1010xxxx 0nnnnnnn 0vvvvvvv 3 Bytes Tasten-Nachdruck
n = Note v = Geschwindigkeit
0xBx nn vv 1011xxxx 0ccccccc 0vvvvvvv 3 Bytes Controller ändern
c = Controller v = Wert
0xCx pp 1100xxxx 0ppppppp 2 Bytes Programm ändern
p = Programmnummer
0xDx cc 1101xxxx 0ccccccc 2 Bytes Kanal Nachdruck
c = Kanal
0xEx nn vv 1110xxxx 0bbbbbbb 0ttttttt 3 Bytes Tonlage (2000Hz ist Standard)
b = untere 7 Bits t = obere 7 Bits

Bei den Metadaten (0xFFxx) ist das dritte Byte immer die Anzahl
der Datenbytes die folgen.

Meta-Daten
Inhalt
HEX
Inhalt
BIN
Länge Beschreibung
0xFF 00 02 ss ss 11111111 00000000 00000010 ssssssss ssssssss 5 Bytes Sequenz ss setzen
0xFF 01 nn <tt ...> 11111111 00000001 nnnnnnnn <tttttttt ...> nn Bytes Text (t) mit n Bytes
0xFF 02 nn <tt ...> 11111111 00000010 nnnnnnnn <tttttttt ...> n Bytes Text für Copyright (n Bytes)
0xFF 03 nn <tt ...> 11111111 00000011 nnnnnnnn <tttttttt ...> n Bytes Name der Spur oder Sequenz
0xFF 04 nn <tt ...> 11111111 00000100 nnnnnnnn <tttttttt ...> n Bytes Instrumentenname
0xFF 05 nn <tt ...> 11111111 00000101 nnnnnnnn <tttttttt ...> n Bytes Liedtext/Lyrik
0xFF 06 nn <tt ...> 11111111 00000110 nnnnnnnn <tttttttt ...> n Bytes Marker
0xFF 07 nn <tt ...> 11111111 00000110 nnnnnnnn <tttttttt ...> n Bytes Hinweis
0xFF 2F 00 11111111 00101111 00000000 3 Bytes Ende der Spur
0xFF 51 03 tt tt tt 11111111 01010001 00000011 tttttttt tttttttt tttttttt 5 Bytes Neues Tempo in t mikrosekunden
0xFF 58 04 nn dd cc bb 11111111 01011000 00000100 nnnnnnnn dddddddd cccccccc bbbbbbbb 7 Bytes Notenschlüssel n/d (2=Viertel, 3=Achtel...)
c = Ticks/Metronomschlag, d=Anzahl 32tel Noten / Viertelnote
0xFF 59 02 ss mm 11111111 01011001 00000010 Ssssssss mmmmmmmm 5 Bytes Tonhöhenjustierung
S=1 Ton erhöhen, S=0 Ton erniedrigen s=Wert
m=0 (hoch), 1 (tief)

Keyboard-Steuerbefehle

Controller-Daten
Inhalt
HEX
Inhalt
BIN
Länge Beschreibung
0xF8 11111000 1 Byte Pause (für Synchronisierung)
0xFA 11111010 1 Byte Sequenz starten
0xFB 11111011 1 Byte Sequenz weiterspielen
0xFC 11111100 1 Byte Sequenz stoppen