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

How can I reference individual MIDI events using the python-midi module?

我正在使用 this python module(对于 python 2)来尝试访问单个 MIDI 事件。到目前为止我有

import midi  
pattern = midi.read_midifile('Conquest of Paradise.mid')  
print pattern

这会打印很多 MIDI 事件。但是 len(pattern) returns 值 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 多很多时。另外,在所有打印的名字中,none 是 NoteOnEventNoteOffEvent .

您在内循环中错误地迭代了模式,试试这个:

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)