我正在使用称为Midas的有用库的帮助下读取as3(Flash CS5)中的Midi文件。
(http://code.google.com/p/midas3/)-midi-as3库。

我试图找出一种简单的方法来计算midi文件的整个持续时间(例如-总时间为4分钟或6分钟...)。我想我可以计算出每首曲目的最后一个音符并检查速度并弄清楚,但我想知道是否:

midi文件的持续时间是否写在我可以提取和使用的数据中的某个位置?

要么

有没有一种简单的方法来计算它,而无需遍历整个文件并比较尾音/节奏。

最佳答案

是的,您需要阅读整个文件并确定阅读最后一个音符的时间。 MIDI文件本质上是流数据,因此文件头中没有“length”字段。

编辑:经过进一步思考,“流”并不是描述MIDI文件的好方法。 MIDI文件确实具有固定长度(以字节为单位),该长度存储在IFF块头中。但是,没有关于文件长度(以秒为单位)的属性,但是假设您可以将所有字节读入一个序列中(并且不要忘记考虑速度变化!),这应该不会太困难确定文件的长度(以秒为单位)。

10-07 19:32
查看更多