我正在使用名为 midas 的有用库读取 as3 (flash cs5) 中的 midi 文件 ( http://code.google.com/p/midas3/) - midi-as3 库。
我正在尝试找出一种简单的方法来计算 MIDI 文件的整个持续时间(例如 - 4 分钟或 6 分钟的总时间...)。我假设我可以计算每首曲目的最后一个音符+检查节奏并找出答案,但我想知道是否:
midi 文件的持续时间是否写在数据中的某处,我可以直接取出并使用?
或
有没有一种简单的方法可以计算它,而无需运行整个文件并比较最后的音符/速度。
不,你需要阅读整个文件并确定阅读最后一个音符的时间。 MIDI 文件本质上是流数据,因此文件头中没有“长度”字段。
编辑:经过进一步思考,“流式传输”并不是描述 MIDI 文件的好方法。 MIDI 文件确实具有固定的字节长度,该长度存储在 IFF 块标头中。但是,没有关于文件长度(以秒为单位)的属性,但假设您可以将所有字节读入序列中(并且不要忘记考虑速度变化!),这应该不会太困难确定文件的长度(以秒为单位)。
我一直在尝试简单地快速计算出我在不使用 Logic Pro X 的情况下通过键盘进行 MIDI 录音的持续时间......这就是答案! https://youtu.be/xJv6pDwhWmU