Synthesia播放midi文件没有任何音符关闭事件?

时间:2017-04-10 11:26:10

标签: midi file-format

我有一个.mid文件 - this具体。公寓从这里的标题块是midi的相关部分。第一个轨道块仅包含元事件,并描述为

4D 54 72 6B 00 00 00 52 // Track chunk #1 info

00 FF 58 04 04 02 18 08 // Meta event

00 FF 59 02 00 00 // Meta event

00 FF 51 03 15 CC 5B // Meta event

81 88 70 FF 51 03 16 E3 60 // Meta event

81 70 FF 51 03 1A 28 6E // Meta event

81 70 FF 51 03 1C 9C 38 // Meta event

81 70 FF 51 03 1E 84 80 // Meta event

81 70 FF 51 03 20 B2 89 // Meta event

81 70 FF 51 03 23 36 6C // Meta event

81 70 FF 51 03 2B 98 B7 // Meta event

00 FF 2F 00 // Meta event. End of track #1

这是第二个跟踪块,仅包含 事件的注释:

4D 54 72 6B 00 00 04 02 // Track chunk #2 info

00 FF 21 01 00 // Meta event

00 FF 03 1F 53 69 6E 66 6F 6E 69 
61 20 66 72 6F 6D 20 4B 61 6E 74 61 74 61 20 23 
31 30 36 20 2D 4A 53 20 // Meta event

00 C0 4A // Midi event

00 B0 07 7C // Midi event

00 B0 0A 52 // Midi event

00 B0 5B 4B // Midi event

96 40 90 4B 50 // Midi "Note on" event

81 63 4B 00 // Midi "Note on" event because of running status 

... // No note offs event in this track chunk.

FF 2F 00 // Meta event. End of track #2

这是第3道:

4D 54 72 6B 00 00 03 27 // Track chunk #3 info

... // Some meta and non-note-on, non-note-off midi events

96 40 91 4B 50 // "Note on" event

81 63 4B 00 // Another "Note on" event

... // No note offs

FF 2F 00 // End of track #3

跟踪块#4,#5和#6具有与#3相同的结构; #7仅包含两个元事件。

请注意,每个不包含元事件的曲目块都以两个 Note on 事件开头,其中没有一个包含一个 Note off 事件

但这就是在加载文件时,只有在歌曲开头时,Synthesis(midi播放器)看到的内容:

Synthesia capture

此midi的结构将是 Note on 事件,后跟同一轨道块中的 Note off 事件,但这不会发生。< / p>

这里发生了什么?

1 个答案:

答案 0 :(得分:4)

96 40
      90 4B 50 // Midi "Note on" event
81 63
         4B 00 // Midi "Note on" event because of running status
            ^^

MIDI specification说:

  

MIDI提供两种大致相同的关闭音符(声音)的方法。可以通过为相同的音符编号和通道发送音符关闭消息,或者通过为该音符和通道发送速度值为零的音符开启消息来关闭音符。在零速度下使用&#34; Note-On的优势&#34;是运行状态时可以避免发送额外的状态字节。

     

由于这种效率,发送速度值为零的Note-On消息是最常用的方法。