【发布时间】:2017-06-28 10:42:12
【问题描述】:
这是我的代码:
import midi
pattern = midi.read_midifile('midifile.mid')
for p in pattern:
for event, lastEvent in zip(p[1:], p):
if event.name == 'Note On' and lastEvent.name == 'Note On':
if event.channel == 1:
print(event.pitch, lastEvent.pitch)
例如,前 5 个音高是57, 45, 65, 53, 52
意思是我想要
45, 57
65, 45
53, 65
52, 53
但是代码的输出是
45, 57
53, 65
64, 52
50, 62
提前致谢
【问题讨论】:
-
理论上,
zip是正确的。print([e.pitch for e in p if e.channel == 1 and e.name == 'Note On'])的输出是什么? -
那将是错误:“TrackNameEvent”对象没有“通道”属性。这是因为只有名为“Note On”或“Note Off”的事件才有频道。