Hello,
I have difficulties interpreting the SMPTE Offset Meta Event in Standard MIDI Files. Citing:
FF 54 05 hr mn se fr ff SMPTE Offset
[...] the hour must be encoded with the SMPTE format, just as it is in MIDI Time Code. [...]
Various sources on the internet contradict themselves on what that means. I have seen these interpretations:
- hr = hhhhhhhh, number 0-23, fr = FPS (e.g. here) - I don't believe that's correct
- hr = sshhhhhh, ss = FPS, not mentioning syntax of hours (eg. here), but 6 bits would make sense for binary coded decimals which are mentioned for SMPTE on Wikipedia or e.g. here.
- hr = 0yyzzzzz, yy = FPS, zz number 0-23. (e.g. here)
Could anyone please clarify the format of hr byte in this event?
Thank you!
The MIDI Time Code spec states that the format for the hour is as follows:
0 yy zzzzz (8 bits)
0 is a reserved field (No other value is allowed)
yy is the time code type (FPS)
zzzzz is the hour count (0-23)
That appears to match the last example in your list.
Forum Admin (MMA)
Hi,
I have a related question. MTC message specifies to ignore unused bits on frame-rate/hour, minutes, seconds and frames. However, in SMPTE Offset message, there is an additional subframe, 0-99 so on 7 bits, leaving the #7 bit unused in the last payload byte. I just wanted to know if the bit #7 is to be ignored on read (and zeroed on write) or if a non-zero bit there, is to be treated as an error.
I'm aware I'm pedantic, but that's on purpose. I may have two or more other questions of the like in the future, since I have doubts about some MIDI files from the net, with things looking weird in it.