如何从 MIDI 文件中获取时序数据?

Posted

技术标签:

【中文标题】如何从 MIDI 文件中获取时序数据?【英文标题】:How can I obtain timing data from a MIDI file? 【发布时间】:2014-05-02 06:05:03 【问题描述】:

我有一堆 MIDI 文件需要处理。对于其中的每一个,我都必须找到某些和弦开始的确切毫秒数。我该怎么做呢?到目前为止,我发现的库并没有那么有用。

有没有办法只打印 MIDI 文件的音符和时间戳列表?

【问题讨论】:

我希望有一个通用的工具或程序。编程方面,Python、Java 或 C。 那么你是想用 [lang] 来做,还是想找软件为你做呢? 要么,但首选后者。 【参考方案1】:

打印音符和时间戳列表的最简单方法是使用 MIDI 到文本的转换程序。谷歌搜索“midi to text”会产生一些——例如,mf2t。但是,MIDI 文件不会以秒或毫秒为单位存储事件的时间戳,而是以滴答声为单位存储增量时间 - 尝试使用谷歌搜索“midi 文件增量时间”。

您的选择可能是:

使用 MIDI 到文本程序,解析文本输出并自己进行毫秒转换 - 可能使用例如Excel

使用 MIDI 库(如需建议,请告诉我们您使用哪种语言编写代码)读取音符事件并将其直接转换为毫秒,避免文本解析步骤

【讨论】:

以上是关于如何从 MIDI 文件中获取时序数据?的主要内容,如果未能解决你的问题,请参考以下文章

Mido - 如何从不同端口实时获取 midi 数据

如何从 MIDI 序列中获取 Note On/Off 消息?

使用 AudioKit 从 MIDI 文件中读取音符

Java 从 MIDI 序列中获取乐器列表

如何在 OS X 中读取 midi 文件并获取曲目的预设信息

如何通过 Pygame 从 MIDI 设备获取输入?