了解 MIDI 文件如何映射到 javascript 中的对象
Understanding how midi file is mapped to object in javascript
我正在使用我发现的这个图书馆来阅读 midi file
由于文档太少,我不知道如何读取输出对象?
问题:通道、数据、增量时间和类型键是什么意思?
最后我很想将这个 js 对象映射到某种可视化。
Channel:MIDI格式使用通道的概念,让不同的MIDI设备通过监听这样一个通道,只监听特定的MIDI事件。这使得可以将单个 MIDI 文件用于应该播放不同音符的多个乐器等。因此,当您有一个关于事件的音符时,您应该检查事件的通道并且只播放对发生的事件感兴趣的乐器这个频道。
Data:数据有点随意,但在您的示例中,我们有一个类型为 255 (0xFF) 的事件,它是一个元事件。它的元类型为 3 (0x03),这意味着它是 Sequence/Track-name。这可能是由创建您使用的 MIDI 文件的程序指定的。这里有一个非常漂亮和简洁的事件列表:http://www.ccarh.org/courses/253/handout/smf/
deltaTime:由于 MIDI 文件中的事件与速度无关,因此它使用节拍的概念。它基本上是一种分辨率,表示为每四分音符的滴答声。我 认为 每个四分音符 480 个节拍是相当标准的,尽管这完全基于我自己的经验,所以 YMMV。事件可以用绝对时间表示(即这个事件注释发生在距离轨道开始的 4800 个滴答处)或增量时间。增量时间是自上次 MIDI 事件发生以来的节拍数。
Type:MIDI 文件中的每个 MIDI 事件都有一个类型来标识它是什么类型的事件。这很重要,因为不同类型的事件有不同的格式(因此改变了我们解码它的方式,因为 MIDI 是二进制格式),其中一些具有固定长度,而另一些包含有关事件长度的信息(字节数弥补事件)。
自从我上次使用 MIDI 格式以来已经有几年了,但我认为以上内容是准确的。
我正在使用我发现的这个图书馆来阅读 midi file
由于文档太少,我不知道如何读取输出对象?
问题:通道、数据、增量时间和类型键是什么意思?
最后我很想将这个 js 对象映射到某种可视化。
Channel:MIDI格式使用通道的概念,让不同的MIDI设备通过监听这样一个通道,只监听特定的MIDI事件。这使得可以将单个 MIDI 文件用于应该播放不同音符的多个乐器等。因此,当您有一个关于事件的音符时,您应该检查事件的通道并且只播放对发生的事件感兴趣的乐器这个频道。
Data:数据有点随意,但在您的示例中,我们有一个类型为 255 (0xFF) 的事件,它是一个元事件。它的元类型为 3 (0x03),这意味着它是 Sequence/Track-name。这可能是由创建您使用的 MIDI 文件的程序指定的。这里有一个非常漂亮和简洁的事件列表:http://www.ccarh.org/courses/253/handout/smf/
deltaTime:由于 MIDI 文件中的事件与速度无关,因此它使用节拍的概念。它基本上是一种分辨率,表示为每四分音符的滴答声。我 认为 每个四分音符 480 个节拍是相当标准的,尽管这完全基于我自己的经验,所以 YMMV。事件可以用绝对时间表示(即这个事件注释发生在距离轨道开始的 4800 个滴答处)或增量时间。增量时间是自上次 MIDI 事件发生以来的节拍数。
Type:MIDI 文件中的每个 MIDI 事件都有一个类型来标识它是什么类型的事件。这很重要,因为不同类型的事件有不同的格式(因此改变了我们解码它的方式,因为 MIDI 是二进制格式),其中一些具有固定长度,而另一些包含有关事件长度的信息(字节数弥补事件)。
自从我上次使用 MIDI 格式以来已经有几年了,但我认为以上内容是准确的。