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 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
|
|
0xnnnn
|
3 Bytes
|
FF 2F 00
|
11111111 00101111 00000000
|
Ende der Spur
|
Für die Notennummer gilt folgende Tabelle
Noten
Oktave
|
|
C
|
C#
|
D
|
D#
|
E
|
F
|
F#
|
G
|
G#
|
A
|
A#
|
B
|
0
|
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
1
|
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
2
|
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
32
|
33
|
34
|
35
|
3
|
|
36
|
37
|
38
|
39
|
40
|
41
|
42
|
43
|
44
|
45
|
46
|
47
|
4
|
|
48
|
49
|
50
|
51
|
52
|
53
|
54
|
55
|
56
|
57
|
58
|
59
|
5
|
|
60
|
61
|
62
|
63
|
64
|
65
|
66
|
67
|
68
|
69
|
70
|
71
|
6
|
|
72
|
73
|
74
|
75
|
76
|
77
|
78
|
79
|
80
|
81
|
82
|
83
|
7
|
|
84
|
85
|
86
|
87
|
88
|
89
|
90
|
91
|
92
|
93
|
94
|
95
|
8
|
|
96
|
97
|
98
|
99
|
100
|
101
|
102
|
103
|
104
|
105
|
106
|
107
|
9
|
|
108
|
109
|
110
|
111
|
112
|
113
|
114
|
115
|
116
|
117
|
118
|
119
|
10
|
|
120
|
121
|
122
|
123
|
124
|
125
|
126
|
127
|
|
|
|
|