没有关闭事件的 MIDI 音符开启事件

MIDI Note On Event Without Off Event

我制作了一个系统,可以获取 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 力度的音符解释为音符关闭。我不确定它是否属于标准。