我正在使用名为midas的有用库帮助读取as3(flash cs5)中的midi文件 (http://code.google.com/p/midas3/) - midi-as3库。
我试图找出一种计算midi文件整个持续时间的简单方法(例如 - 总时间为4分钟或6分钟......)。我假设我可以计算每首曲目的最后一个音符+检查速度并弄明白,但我想知道是否:
midi文件的持续时间是否写入我可以拔出并使用的数据中的哪个位置?
或
有没有一种简单的方法可以在不运行整个文件的情况下计算它并比较last-notes / tempos。
答案 0 :(得分:4)
不,您需要阅读整个文件并确定阅读最后一个音符的时间。 MIDI文件本质上是流数据,因此文件头中没有“长度”字段。
编辑:经过进一步思考,“流媒体”并不是描述MIDI文件的好方法。 MIDI文件确实具有固定长度(以字节为单位),存储在IFF块头中。但是,没有关于文件长度的属性(以秒为单位),但假设您可以将所有字节读入序列中(并且不要忘记将速度更改考虑在内!),它应该不会太难以秒为单位确定文件的长度。