我编写了一个程序来解析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': ...
答案 0 :(得分:0)
MIDI规范说:
MIDI提供了两种大致等效的关闭音符(语音)的方法。笔记可能已关闭 通过发送相同音符编号和通道的Note-Off消息,或发送Note-On 该音符和通道的速度值为零的消息。使用“ Note-On at”的优势 零速度”是因为在使用“运行状态”时可以避免发送其他状态字节。由于这种效率,最常用的是发送速度值为零的Note-On消息 方法。但是,某些键盘乐器会执行释放速度,其中音符代码(8nH) 伴随有“速度关闭”字节。接收者必须能够识别其中一种方法 关闭笔记,并应一视同仁。
因此,当您收到note_on
消息时,还必须检查其velocity
。