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 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
|
|