3

我在名为 midas ( http://code.google.com/p/midas3/ ) 的有用库的帮助下阅读 as3 (flash cs5) 中的 midi 文件 - midi-as3 库。

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

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

或者

有没有一种简单的方法来计算它而无需运行整个文件并比较最后的音符/节奏。

4

1 回答 1

4

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

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

于 2011-05-18T05:21:03.697 回答