Montanasoft

Midi-Timing

Jeder Midi-Message, unabhängig davon, ob sie einen hörbaren Effekt bringt, ist ein Deltwert vorangestellt. Ist dieser Wert größer NULL bewirkt er, dass die nachfolgende Message erst nach einer gewissen Zeit ausgeführt wird. Diese Zeit ergibt sich aus dem Deltawert in Verbindung mit dem PPQN-Wert und dem Tempowert . Den Deltawert könnte man mit dem Notenwert vergleichen, also Viertelnote, Achtelnote usw.. Welchen Notenwert der Deltawert repräsentiert, ergibt sich aus dem Verhältnis zum PPQN-Wert. Ist dieser 480 und der Deltawert ist 960, dann repräsentiert der Deltawert eine halbe Note. Um zu ermitteln, wieviel Zeit vergeht, bis das Midi-Ereignis ausgeführt wird, benötigen wir den Tempowert. Dieser bestimmt die Zeit, in der eine Viertelnote gespielt wird und ist in Mykrosekunden definiert. Der Tempowert kann innerhalb eines Midis beliebig oft geändert werden. Bei mehrspurigen Midis findet man oft eine separate Tempospur, in der die Tempoänderungen abgelegt sind.
Grafik
Die nebenstehende Grafik zeigt die Umsetzung von 4 unmittelbar aufeinanderfolgenden Viertelnoten in Midi. Es folgen jeweils:
Deltawert (0) --> Note ein --> Deltawert --> Note aus
wobei der Deltawert vor der 'Note aus' - Message gleich dem Deltawert für eine Viertelnote ist. Daran ist zu erkennen: Wie lange ein Ton gespielt wird, hängt vom Deltawert ab, der vor der Message steht, die den Ton wieder ausschaltet. Zwischen der 'Note ein' und der 'Note aus'- Message können natürlich andere Messages mit ihren Deltawerten stehen. In diesem Fall addieren sich die Deltawerte und ergeben in ihrer Gesamtheit den Deltawert, nach dem die Note wieder ausgeschaltet wird.
Der Deltawert umfasst in der Praxis ein bis drei Bytes und steht im Big-Endian-Format (das erste Byte ist also das Byte mit der höchsten Wertigkeit) in der Datei. Ist dieses Byte > 127 folgt ein weiteres Delta-Byte usw.. Der Deltawert errechnet sich zu:
Deltawert 3 Bytes:
Deltawert = ((Byte1 - 80h) * 16'384) + ((Byte2 - 80h) * 128) + Byte3
Delta-Wert 2 Bytes:
Deltawert = ((Byte1 - 80h) * 128) + Byte2
Deltawert 1 Byte:
Deltawert = Byte1

Um die Deltazeit in Millisekunden zu ermitteln, die bis zur Ausführung der folgenden Message vergehen soll, sind noch ein paar Berechnungen erforderlich.
Zuerst muss das Verhältnis zum Deltawert für eine Viertelnote(PPQN) ermittelt werden. Das Ergebnis wird dann mit dem Tempowert multipliziert und da dieser in Mykrosekunden angegeben ist, nochmals durch 1000 dividiert.

Deltazeit = Deltawert / Delta4 * Tempowert / 1000

Der Tempowert steht in Form einer Meta-Message (möglicherweise mehrmals) in der Midi-Datei. Ist kein Tempowert angegeben, wird standardmäßig von 120 Viertelnoten/Minute ausgegangen, was einem Tempowert von 500'000 entspricht.

Die Berechnung des Tempos aus dem Tempowert
Möchten Sie das aktuelle Spieltempo anzeigen lassen und es handelt sich um einen /4-Takt, berechnen Sie aus dem Tempowert das Tempo in Beats per Minute:
Tempo = 60'000'000 / Tempowert