使用 music21 从 .mxl 文件中提取音符数据



我对python很熟悉,但最近开始尝试一些音乐分析。我遇到过music21,我想知道如何提取音乐.mxl文件中每个音符的基本音符数据(音高和持续时间)。我已经浏览了文档,但一直在努力消化所有内容并找到满足我需求的东西。由于我在 .mxl 文件和音乐方面的经验有限21,我无法提供任何我迄今为止尝试过的真实例子。

但是,我收集到的是,可以使用

s = converter.parse('exampleFile.mxl')
test=s.measures(1, 10)
test.plot('horizontalbar')

对于我使用的特定部分,看起来像

MXL 示例图像

这清楚地表明,在第一个小节中,演奏音符 C4、Eb 和 G,其中小节的长度代表音符持续时间。最终,我想要列表格式的数据。

通过做,

test=s.measures(1, 5)
test.show('text')

我可以得到一个演奏的音符列表,它们的节拍在适当的位置,但它打印的东西是这样的

{0.0} <music21.key.Key of E- major>
{0.0} <music21.meter.TimeSignature 4/4>
{0.0} <music21.note.Note C>
{0.5} <music21.note.Note E->
{1.0} <music21.note.Note G>
{1.5} <music21.note.Note E->
{2.0} <music21.note.Note C>
{2.5} <music21.note.Note E->
{3.0} <music21.note.Note G>
{3.5} <music21.note.Note E->

但这仍然需要按摩:1)获得与图表显示相同的信息,2)将其转换为我想要的列表格式。

任何这方面的帮助将不胜感激。同时,我将继续阅读文档。提前感谢!

你可能在追求这样的东西:

for tN in s.recurse().notes:
print([tN.step,tN.octave,tN.duration.quarterLength])

最新更新