如何使用python-midi模块引用各个MIDI事件?

时间:2017-06-26 13:00:10

标签: python midi

我正在使用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时。同样在打印的所有名称中,没有一个是NoteOnEventNoteOffEvent

1 个答案:

答案 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)