了解midi文件如何在javascript

时间:2015-08-01 21:20:44

标签: javascript html5 midi web-audio

我正在使用我找到的这个库来阅读midi file

由于文档很少,我不知道如何读取输出对象?

问题:做什么:频道,数据,deltaTime和类型键是什么意思?

最后我想将这个js对象映射到某种可视化。 enter image description here

1 个答案:

答案 0 :(得分:0)

频道:MIDI格式使用通道的概念,允许不同的MIDI设备仅通过收听此类频道来收听特定的MIDI事件。这使得可以将单个MIDI文件用于应该播放不同音符等的多个乐器。因此,当您对事件有记录时,您应该检查事件的频道,并且只播放对发生的事件感兴趣的乐器。这个频道。

数据:数据有点武断,但在您的示例中,我们有一个类型为255(0xFF)的事件,这是一个元事件。它的元类型为3(0x03),这意味着它是一个序列/轨道名称。这可能是由创建您使用的MIDI文件的程序分配的。这里有一个非常漂亮和简洁的事件列表:http://www.ccarh.org/courses/253/handout/smf/

deltaTime :由于MIDI文件中的事件与节拍无关,因此它使用了刻度的概念。它的基本分辨率表示为每季度票据的刻度。我认为每季度480个刻度是相当标准的,虽然这纯粹基于我自己的经验,所以YMMV。然后,事件可以以绝对时间表示(即,关于事件的这个音符从轨道的开始发生4800个滴答)或增量时间。 Delta时间是自上次MIDI事件发生以来的刻度数。

类型:MIDI文件中的每个MIDI事件都有一个类型来标识它是什么类型的事件。这很重要,因为不同类型的事件具有不同的格式(因此改变了我们解码它的方式,因为MIDI是二进制格式),其中一些具有固定长度,而其他事件包括事件有多长的信息(字节数)弥补活动)。

自从我上次使用MIDI格式以来已经过了几年,但我认为上述内容是准确的。