我正在编写自己的MIDI解析器,一切似乎都很顺利。
我正在测试我在野外看到的一些文件。我注意到MIDI轨道似乎从未出现过多于一个音符(产生多于一个音调)。这是设计,midi音轨可以一次播放多个音符吗?
(我指的是同步音轨的数量,我指的是单曲中音调的数量。)
我测试的midi文件看起来像这样:
ON_NOTE71:ON_NOTE75:ON_NOTE79 ON_NOTE71:OFF_NOTE71:ON_NOTE75:OFF_NOTE75:ON_NOTE79:OFF_NOTE79
它看起来像这样吗?
ON_NOTE71:ON_NOTE73:OFF_NOTE73:OFF_NOTE71
如何检测此替代结构?
答案 0 :(得分:2)
是。一次播放多个音符称为复音。不同的MIDI规范定义了对不同复音级别的支持。
答案 1 :(得分:1)
一次可以播放的音符数是硬件实现细节。您的软件应允许同时播放任意数量的同时音符。我建议保留一张当前打开哪些音符的表格,以便您可以在播放停止时为每个音符发送一个音符。理想情况下,表格应该有一个计数,每个音符在音符发生时增加,在音符关闭发生时减少。这样,如果某个音高有两个关于待处理事件的音符,您可以发送两个音符关闭事件。您无法知道与之通信的设备如何处理相同音高的事件连续音符,因此发送相同数量的音符关闭事件是最安全的。
答案 2 :(得分:0)
是。控制器和软件都可以产生这样的事件。