如何使用 Music21 检索钢琴曲的左手和右手
How to retrieve the left and right hand of a piano piece using Music21
我正在尝试检索带有两个五线谱的钢琴曲的右手和左手音符以进行音乐分析,但我在实现这一点时遇到了很多麻烦。
我正在使用 Music21 来执行此操作。在他们的文档中,Part class 似乎对应于一个员工,所以我认为获取流对象的 Part 对象将检索左手(Part 对象)和右手(Part 对象)。
curr_stream = converter.parse(str(file))
parts = curr_stream.getElementsByClass(stream.Part)
left_hand = parts[0]
right_hand = parts[1]
由于这首歌有两个五线谱,我希望有两个部分,但对于一些有两个五线谱的歌曲来说,情况并非如此。一些明明有两个五线谱的歌曲在流对象中只有一个部分。
一切都取决于str(file)
是什么。对于使用一个 musicxml 声部和多个谱表正确编码的 MusicXML 文件,music21 将创建两个 PartStaff 对象。 PartStaff 是 stream.Part 的子类,因此您的代码可以工作(curr_stream.parts)。例如,参见 corpus.parse('cpebach')
。但是那里有很多错误编码的钢琴曲。
我正在尝试检索带有两个五线谱的钢琴曲的右手和左手音符以进行音乐分析,但我在实现这一点时遇到了很多麻烦。
我正在使用 Music21 来执行此操作。在他们的文档中,Part class 似乎对应于一个员工,所以我认为获取流对象的 Part 对象将检索左手(Part 对象)和右手(Part 对象)。
curr_stream = converter.parse(str(file))
parts = curr_stream.getElementsByClass(stream.Part)
left_hand = parts[0]
right_hand = parts[1]
由于这首歌有两个五线谱,我希望有两个部分,但对于一些有两个五线谱的歌曲来说,情况并非如此。一些明明有两个五线谱的歌曲在流对象中只有一个部分。
一切都取决于str(file)
是什么。对于使用一个 musicxml 声部和多个谱表正确编码的 MusicXML 文件,music21 将创建两个 PartStaff 对象。 PartStaff 是 stream.Part 的子类,因此您的代码可以工作(curr_stream.parts)。例如,参见 corpus.parse('cpebach')
。但是那里有很多错误编码的钢琴曲。