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