417
edits
(Added possible explanation for the broken Apple IIGS AGI MIDI files.) |
(Added more comments about non-standard Apple IIGS AGI MIDI files.) |
||
Line 1,288: | Line 1,288: | ||
which *can* be >= 0x80! Investigating... (If this is so then it's a non-standard | which *can* be >= 0x80! Investigating... (If this is so then it's a non-standard | ||
behaviour for a MIDI file) | behaviour for a MIDI file) | ||
Update! Okay, so it seems these MIDI files don't use variable length quantities | |||
for delta-time. Delta-time is always one single byte even if it might be >= 0x80. | |||
But! That delta-time byte also acts as a shorthand for commands like 0xFC | |||
(Stop sequence) or 0xF8 (Timer sync). | |||
So let's read a single byte from the stream. If it's 0xFC it stops the | |||
sequence right there. If it's 0xF8 we can probably just jump over it as we | |||
probably don't need it. Otherwise you use the byte's value as a delta-time | |||
and then you read the command byte, parameters etc normally (Running status | |||
is also used). At least this is my current theory based on experiments with | |||
a Python program I wrote for parsing these MIDI files. |
edits