Music21:在写入的 MIDI 文件末尾去除空数据

Music21: Strip empty data at end of written midi file

我正在使用 music21 编写一个简单的 midi 文件:

import music21

stream = music21.stream.Stream()
n = music21.note.Note(60)
n.duration.type = 'half'
stream.insert(0, n)
stream.write('midi', 'out.midi')

这会演奏半个小节的中音 c。但是,对于该度量的其余部分,生成的文件包含空 space:

有没有办法删除尾随的“whitespace”?

PyPI (7.1.0) 的当前版本似乎总是在末尾添加四分之一音符。这可以通过设置 music21.defaults.ticksAtStart 来更改,尽管它的名称。单位是由 music21.defaults.ticksPerQuarter 定义的 MIDI 节拍。两者的默认值都是1024.

请注意,有些 MIDI 播放器会在文件结束时停止合成,因此如果没有填充,声音会在最后一个音符释放时停止而不是消失。

此外,无论您做什么,有些玩家都可能会填充到测量边界。除了插入休止符外,无法在 MIDI 中对拾取小节进行编码。