Hi
ich versuche gerade den Aufbau einer Mididatei nach zu vollziehen. Ich
selbst verstehe den Inhalt, allerdings funktioniert meine
Analyse-Software nicht, da sie nicht die Länge der Befehle erkennt und
somit schon nach kurzer Zeit "verrutscht". Zum Beispiel gibt es den Note
Off Befehl:
Laut dieser Seite:
1 | 8X YY ZZ
|
2 |
|
3 | X=Kanal
|
4 | YY=Note (siehe Noten)
|
5 | ZZ=Dynamik (Drucklautstärke)
|
http://jakob-werner.de/Midi/Tabellen.htm#Tabelle%207:
Also insgesamt hat der Note Off Befehl 3 Bytes.
In einer Mididatei aus dem Internet
(http://users.snip.net/~mshuster/mario2.mid , die völlig fehlerfrei
abgespielt wird), finde ich aus diesem Ausschnitt
1 | 99 2A 73 28
|
2 | 89 2A 00
|
3 | 81 18
|
4 | 99 2A 6D 28
|
5 | 89 2A 00 68
|
6 | 99 2A 62 1A
|
7 | 89 2A 00 16
|
8 | 99 2A 6D 24
|
9 | 89 2A 00
|
10 | 81 1C
|
11 | 99 2A 6D 1E
|
12 | 89 2A 00 72
|
13 | 99 2A 56 28
|
diese Note On Befehle:
1 | 89 2A 00 68
|
2 | 89 2A 00 16
|
3 | 89 2A 00
|
4 | 81 1C
|
5 | 89 2A 00 72
|
Diese haben Länge zwischen 2 und 4 Bytes. Wie kann ein Programm nun
erkennen ob der nächste Midi-Befehl beginnt? Ich erkenne es nur dadurch,
dass es keine andere Möglichkeit gibt, die Befehle aufzuteilen - aber
eigentlich müsste das doch eindeutig sein.