单个MIDI轨道可以一次播放多个音符吗?

时间:2012-04-24 04:37:24

标签: audio midi

我正在编写自己的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

如何检测此替代结构?

3 个答案:

答案 0 :(得分:2)

是。一次播放多个音符称为复音。不同的MIDI规范定义了对不同复音级别的支持。

请参阅http://www.midi.org/techspecs/gm.php

答案 1 :(得分:1)

一次可以播放的音符数是硬件实现细节。您的软件应允许同时播放任意数量的同时音符。我建议保留一张当前打开哪些音符的表格,以便您可以在播放停止时为每个音符发送一个音符。理想情况下,表格应该有一个计数,每个音符在音符发生时增加,在音符关闭发生时减少。这样,如果某个音高有两个关于待处理事件的音符,您可以发送两个音符关闭事件。您无法知道与之通信的设备如何处理相同音高的事件连续音符,因此发送相同数量的音符关闭事件是最安全的。

答案 2 :(得分:0)

是。控制器和软件都可以产生这样的事件。