Ich bastele gerade an Erweiterungen des MUSIC-Befehles mit dem Ziel, eine MIDI-Datei zum Bearbeiten in ein Array für den MUSIC-Befehl einlesen zu können.
Zum Timing der MIDI-Dateien habe ich nicht ganz einheitliche Informationen gefunden. Ich bitte mich daher zu korrigieren, wenn ich falsch liege:
Im Header der MIDI-Datei ist die Basisgeschwindigkeit angegeben. In der Regel im PPQN-Format, wobei der Wert der Anzahl der Ticks pro Beat (Viertelnote) entspricht. (Nennen wir den Wert tpq.)
Das sagt allerdings noch nichts darüber aus, wie lange ein Tick ist, also wieviele Millisekunden er dauert.
Dafür gibt es, wenn ich es richtig verstanden habe, die Midi-Message $FF5103, bei der die nachfolgenden drei Bytes angeben, wieviele Millionenstel Sekunden ein Beat (eine Viertelnote) dauert. (Nennen wir den Wert msq.)
Stünde hier also der Wert 500.000, wären das 500ms also 0,5sec, was einem Tempo von 120 Beats/Minute entspricht.
Wäre tpq also exakt 500, wäre bei Tempo 120 ein Tick also genau eine Millisekunde. Stünde bei tpq hingegen 250, wäre bei Tempo 120 ein Tick dann 2 Millisekunden.
Stimmt das so weit?
Desweiteren habe ich MIDI-Dateien, in denen die Tempo-Message nicht vorkommt. Hier scheint der Wert 500.000 (120 Beats/Minute) als Vorgabe zu existieren, wenn ich mit meinen Zeit-Messungen nicht ganz falsch liege. Ist das so Standard?
Gruß
Roland