import music21
from music21 import *
piece = converter.parse("full_path_to_piece.midi")
all_parts = []
for part in piece.parts:
part_tuples = []
for event in part:
for y, in event.contextSites():
if y[0] is part:
offset = y[1]
if getattr(event, 'isNote', None) and event.isNote:
part_tuples.append((event.nameWithOctave, event.quarterLength, offset))
if getattr(event, 'isRest', None) and event.isRest:
part_tuples.append(('Rest', event.quarterLength, offset))
all_parts.append(part_tuples)
在music21中有不止一种方法可以做到这一点,所以这只是一种简单的方法。请注意,持续值以浮点形式表示,例如四分之一音符等于1.0,半音符等于2.0,等等:
另一种解决方案是使用vis框架,它通过music21以符号表示法访问音乐文件,并将信息存储在pandas数据帧中。您可以这样做:
^{pr2}$另一个解决方案是使用Humdrum代替music21。在
相关问题 更多 >
编程相关推荐