MIDI: Unterschied zwischen den Versionen

Aus File Format
Wechseln zu: Navigation, Suche
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 59: Zeile 59:
 
|}
 
|}
  
 +
Es folgen daraufhin die sogenannten Tracks (Spuren). Diese sind ebenfalls Chunk-basierend:
  
 +
{| class="wikitable"
 +
|+ Track
 +
!Offset
 +
!Länge
 +
!Inhalt<br />HEX
 +
!Inhalt<br />BIN
 +
!Beschreibung
 +
|-
 +
|0x0000
 +
|4 Bytes
 +
|4D 54 72 6B
 +
|
 +
| '''MTrk''' MIDI Track Chunk
 +
|-
 +
|0x0004
 +
|4 Bytes
 +
|
 +
|
 +
| Länge des Tracks in Bytes <br />(abzüglich der 8 Bytes für den Header und der Längeninformation)
 +
|-
 +
|0x0008
 +
|n Bytes
 +
|
 +
|
 +
| Die Trackdaten. Aufeinanderfolgend jeweils eine Kombination<br /> aus folgenden, bis Dateiende (siehe Länge des Tracks)<br /> x bezeichnet den Kanal.
 +
{| class="wikitable"
 +
|+ MIDI-Kommando
 +
!Inhalt<br />HEX
 +
!Inhalt<br />BIN
 +
!Länge
 +
!Beschreibung
 +
|-
 +
|0x8x nn vv
 +
|1000xxxx 0nnnnnnn 0vvvvvvv
 +
|3 Bytes
 +
|Note/Taste loslassen<br /> n = Note  v = Geschwindigkeit
 +
|-
 +
|0x9x nn vv
 +
|1001xxxx 0nnnnnnn 0vvvvvvv
 +
|3 Bytes
 +
|Tastendruck<br /> n = Note  v = Geschwindigkeit
 +
|-
 +
|0xAx nn vv
 +
|1010xxxx 0nnnnnnn 0vvvvvvv
 +
|3 Bytes
 +
|Tasten-Nachdruck<br /> n = Note  v = Geschwindigkeit
 +
|-
 +
|0xBx nn vv
 +
|1011xxxx 0ccccccc 0vvvvvvv
 +
|3 Bytes
 +
|Controller ändern<br /> c = Controller  v = Wert
 +
|-
 +
|0xCx pp
 +
|1100xxxx 0ppppppp
 +
|2 Bytes
 +
|Programm ändern<br /> p = Programmnummer
 +
|-
 +
|0xDx cc
 +
|1101xxxx 0ccccccc
 +
|2 Bytes
 +
|Kanal Nachdruck<br /> c = Kanal
 +
|-
 +
|0xEx nn vv
 +
|1110xxxx 0bbbbbbb 0ttttttt
 +
|3 Bytes
 +
|Tonlage (2000Hz ist Standard)<br /> b = untere 7 Bits  t = obere 7 Bits
 +
|-
 +
|}
 +
Bei den Metadaten (0xFFxx) ist das dritte Byte immer die Anzahl<br />der Datenbytes die folgen.
 +
{| class="wikitable"
 +
|+ Meta-Daten
 +
!Inhalt<br />HEX
 +
!Inhalt<br />BIN
 +
!Länge
 +
!Beschreibung
 +
|-
 +
|0xFF 00 02 ss ss
 +
|11111111 00000000 00000010 ssssssss ssssssss
 +
|5 Bytes
 +
|Sequenz ss setzen
 +
|-
 +
|0xFF 01 nn &lt;tt ...&gt;
 +
|11111111 00000001 nnnnnnnn &lt;tttttttt ...&gt;
 +
|nn Bytes
 +
|Text (t) mit n Bytes
 +
|-
 +
|0xFF 02 nn &lt;tt ...&gt;
 +
|11111111 00000010 nnnnnnnn &lt;tttttttt ...&gt;
 +
|n Bytes
 +
|Text für Copyright (n Bytes)
 +
|-
 +
|0xFF 03 nn &lt;tt ...&gt;
 +
|11111111 00000011 nnnnnnnn &lt;tttttttt ...&gt;
 +
|n Bytes
 +
|Name der Spur oder Sequenz
 +
|-
 +
|0xFF 04 nn &lt;tt ...&gt;
 +
|11111111 00000100 nnnnnnnn &lt;tttttttt ...&gt;
 +
|n Bytes
 +
|Instrumentenname
 +
|-
 +
|0xFF 05 nn &lt;tt ...&gt;
 +
|11111111 00000101 nnnnnnnn &lt;tttttttt ...&gt;
 +
|n Bytes
 +
|Liedtext/Lyrik
 +
|-
 +
|0xFF 06 nn &lt;tt ...&gt;
 +
|11111111 00000110 nnnnnnnn &lt;tttttttt ...&gt;
 +
|n Bytes
 +
|Marker
 +
|-
 +
|0xFF 07 nn &lt;tt ...&gt;
 +
|11111111 00000110 nnnnnnnn &lt;tttttttt ...&gt;
 +
|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...)<br />c = Ticks/Metronomschlag, d=Anzahl 32tel Noten / Viertelnote
 +
|-
 +
|0xFF 59 02 ss mm
 +
|11111111 01011001 00000010 Ssssssss mmmmmmmm
 +
|5 Bytes
 +
|Tonhöhenjustierung<br />S=1 Ton erhöhen, S=0 Ton erniedrigen s=Wert<br />m=0 (hoch), 1 (tief)
 +
|-
 +
|}
 +
Keyboard-Steuerbefehle
 +
{| class="wikitable"
 +
|+ Controller-Daten
 +
!Inhalt<br />HEX
 +
!Inhalt<br />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
  
 +
{| class="wikitable"
 +
|+ 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
 +
|
 +
|
 +
|
 +
|
 +
|}
  
 
[[Kategorie:Datei]]
 
[[Kategorie:Datei]]
 
[[Kategorie:Sound]]
 
[[Kategorie:Sound]]

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