我正在使用this python module(对于python 2)尝试访问单个MIDI事件。到目前为止我已经
了import midi
pattern = midi.read_midifile('Conquest of Paradise.mid')
print pattern
这会打印很多midi事件。但是len(pattern)
返回值13(这少了很多)。如何迭代pattern
以访问任何midi.NoteOnEvents
?我已经尝试过阅读源代码,但我想我几乎不知道python。
编辑:用户CL指出13指的是曲目 所以我想我可以像这样迭代MIDI文件:
trackCount = len(pattern)
eventCount = 0
for i in range(trackCount):
for j in range(i):
print(pattern[i][j].name)
eventCount += 1
print(eventCount)
但现在这给了eventCount = 78
,当它肯定超过78时。同样在打印的所有名称中,没有一个是NoteOnEvent
或NoteOffEvent
。
答案 0 :(得分:1)
你在内循环中错误地迭代模式,试试这个:
trackCount = len(pattern)
eventCount = 0
for i in range(trackCount):
for j in range(len(pattern[i])):
print(pattern[i][j].name)
eventCount += 1
print(eventCount)
或者,甚至更好:
eventCount = 0
for p in pattern:
for event in p:
print(event.name)
eventCount += 1
print(eventCount)