我制作了一个系统,它接收MIDI文件并创建音乐的图形表示。
每个NoteOnEvent
都是单个音符开始的时间,而每个NoteOffEvent
具有相同的音符代码的时间就是它。
这适用于大多数MIDI文件。
但是,我现在遇到的文件根本没有NoteOffEvent
个事件,所以我一直在播放它们。
例如,看到正确的行为是什么:
midi.NoteOnEvent(tick=0, channel=0, data=[65, 127])
midi.NoteOnEvent(tick=240, channel=0, data=[65, 0])
我认为如果一个音符“on”事件发生在同一个音符上它应该像一个切换事件,但我不确定它是否合理,或者这是否发生在每个midi文件或只是一个子集这样做?
修改
我认为这不重要,但我使用python-midi
从midi文件中提取曲目
答案 0 :(得分:2)
通常将带有0速度的音符解释为音符关闭。我不确定它是否属于标准的一部分。