2017-06-26 45 views
0

我使用this python module(用于python 2)尝试访问单个MIDI事件。到目前为止,我有如何使用python-midi模块引用各个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

我想这个文件有13个曲目。 –

+0

刚刚通过它,你是对的,谢谢。 – roncook

回答

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)