Mido midi-如果在键盘上弹奏,发现Note_On事件的次数是在钢琴卷中记录音符的两倍……?

时间:2019-07-01 22:45:48

标签: python midi mido

我编写了一个程序来解析midi文件并查找所有Note_On事件。

我进入我的DAW钢琴卷,然后在D4,D5,F4中绘画

我的程序正确找到Note_One事件并正确识别它们。

然后我进入Midi键盘并弹奏完全相同的音符,然后保存midi文件。

我的程序找到D4,D4,D5,D5,F4,F4

即它使音符加倍!为什么我得到不同的结果?这两个Midi文件在DAW中看起来是相同的:它们都有三个注释。

这是两个midi文件:

https://drive.google.com/drive/folders/1CUgTJNH-jD5rPJEmT0aSwRp4PhaatxYq?usp=sharing

这里有我的代码,该代码从文件中读取Midi数据:

for i, track in enumerate(Ians_midi.tracks):
    for msg in track:
        if msg.type == 'note_on':   ... 

1 个答案:

答案 0 :(得分:0)

MIDI规范说:

  MIDI提供了两种大致等效的关闭音符(语音)的方法。笔记可能已关闭   通过发送相同音符编号和通道的Note-Off消息,或发送Note-On   该音符和通道的速度值为零的消息。使用“ Note-On at”的优势   零速度”是因为在使用“运行状态”时可以避免发送其他状态字节。

     

由于这种效率,最常用的是发送速度值为零的Note-On消息   方法。但是,某些键盘乐器会执行释放速度,其中音符代码(8nH)   伴随有“速度关闭”字节。接收者必须能够识别其中一种方法   关闭笔记,并应一视同仁。

因此,当您收到note_on消息时,还必须检查其velocity