I think you've got the idea. The MIDI file header tells you how many
quanta per quarter-note pertain in that particular file. The tempo
change events tell you how many microseconds duration is each quarter
note. By accumulating deltas, you keep track of how many quarter notes
have elapsed. By doing simple arithmetic, you convert those quarters to
seconds. You establish a new "baseline" for calculations whenever you
encounter a tempo change event.
So, your given time, minus the time at which the most recent tempo
change occurred, converted to quanta, plus the quantum at which the
most recent tempo change occurred, is the quantum where your given time
> I need to figure out how to convert an offset expressed in seconds to
> a delta time within a list of midi events.
> I thought it would be quite straight forward but it looks like tempo
> changes would complicate things a bit. Is it really just a case of
> accumulating a total time in seconds based on a particular conversion
> rate until a tempo change event is found, calculating a new conversion
> rate, and continuing until the desired time is reached? Or am I missing
> something here?
> Can anyone help me with the calculations required?
> Many thanks!