|
|
| Zeile 176: |
Zeile 176: |
| | |n Bytes | | |n Bytes |
| | |Hinweis | | |Hinweis |
| − | |-
| |
| − | |0xFF 2F 00
| |
| − | |11111111 00101111 00000000
| |
| − | |3 Bytes
| |
| − | |Ende der Spur
| |
| | |- | | |- |
| | |0xFF 51 03 tt tt tt | | |0xFF 51 03 tt tt tt |
| Zeile 227: |
Zeile 222: |
| | |- | | |- |
| | |} | | |} |
| | + | |- |
| | + | |0xnnnn |
| | + | |3 Bytes |
| | + | |FF 2F 00 |
| | + | |11111111 00101111 00000000 |
| | + | |Ende der Spur |
| | + | |- |
| | |} | | |} |
| | Für die Notennummer gilt folgende Tabelle | | Für die Notennummer gilt folgende Tabelle |
Aktuelle Version vom 10. Februar 2015, 22:05 Uhr
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
|
|
|
|
|