音乐21:解析音符和持续时间p

2024-10-17 00:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用music21将多音轨midi文件转换成每个音轨的音符和持续时间数组。在

例如,给定一个midi文件测试.mid里面有16首歌

我想得到16个元组数组,包括(音高,持续时间(加上音符的位置))。在

music21的文档很难理解,我非常感谢您在这方面的任何帮助。。在


Tags: 文件文档数组music21midi音符持续时间元组
1条回答
网友
1楼 · 发布于 2024-10-17 00:30:14

在music21中有不止一种方法可以做到这一点,所以这只是一种简单的方法。请注意,持续值以浮点形式表示,例如四分之一音符等于1.0,半音符等于2.0,等等:

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)

另一种解决方案是使用vis框架,它通过music21以符号表示法访问音乐文件,并将信息存储在pandas数据帧中。您可以这样做:

^{pr2}$

另一个解决方案是使用Humdrum代替music21。在

相关问题 更多 >