Python Music21在保存到midi文件时一次播放所有音符

Python Music21在保存到midi文件时一次播放所有音符,python,midi,music21,Python,Midi,Music21,在music21toolkit中尝试组合顺序和弦和平行和弦时,我注意到了这个问题 ch = stream.Part([ stream.Measure([note.Rest(duration=duration.Duration(type='eighth'))]), stream.Measure([note.Note('C4'), note.Note('F4')]), stream.Measure([note.Rest(duration=duration.Duration(type='h

music21
toolkit中尝试组合顺序和弦和平行和弦时,我注意到了这个问题

ch = stream.Part([
  stream.Measure([note.Rest(duration=duration.Duration(type='eighth'))]),
  stream.Measure([note.Note('C4'), note.Note('F4')]),
  stream.Measure([note.Rest(duration=duration.Duration(type='half'))]),
  stream.Measure([chord.Chord([note.Note('C4'), note.Note('F4')], duration=duration.Duration(type='half'))])
])
ch.write('musicxml.png)

但当另存为MIDI时:
ch.write('MIDI')
所有音符都会同时播放。(我无法连接MIDI,因此无法卸载)


这是
音乐21
中的错误吗?或者我搞砸了什么?

您创建的每个度量值都在偏移量0处,因此当您将它们传递给Part()时,它们都会在偏移量0处插入,这意味着同时插入。xml编写器试图修改符号(调用
makeNotation
etc),但midi编写器更具文字性

尝试将每个度量值追加到stream.Part()中,而不是将它们传递给构造函数。或者在将其写入midi之前,尝试调用
.makeNotation()

00000000  4d 54 68 64 00 00 00 06  00 01 00 01 04 00 4d 54  |MThd..........MT|
00000010  72 6b 00 00 00 3f 00 ff  03 00 00 e0 00 40 00 90  |rk...?.......@..|
00000020  45 5a 00 90 42 5a 00 90  46 5a 00 90 45 5a 00 90  |EZ..BZ..FZ..EZ..|
00000030  42 5a 00 90 46 5a 88 00  80 45 00 00 80 42 00 00  |BZ..FZ...E...B..|
00000040  80 46 00 88 00 80 45 00  00 80 42 00 00 80 46 00  |.F....E...B...F.|
00000050  88 00 ff 2f 00                                    |.../.|
00000055