如何从 music21 乐谱中获取所有钢琴部分?

Posted

技术标签:

【中文标题】如何从 music21 乐谱中获取所有钢琴部分?【英文标题】:How can I get all piano parts from a music21 score? 【发布时间】:2018-03-24 06:55:39 【问题描述】:

我可以使用 music21.stream.Score 获取所有部分

s = music21.stream.Score()
s.getElementsByClass(music21.instrument.Instrument)

music21.instrument.partitionByInstrument(s)

但我找不到检查每个声部是否使用钢琴乐器的方法。有没有更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

要从 music21.stream.Score 中获取所有钢琴声部,您可以这样做:

from music21 import *
piano_parts = []
score = converter.parse('path/to/midi')
instr = instrument.Piano
for part in instrument.partitionByInstrument(score):
    if isinstance(part.getInstrument(), instr):
        piano_parts.append(part)

您可以将instr 分配给任何其他music21.instrument 以提取其他乐器

【讨论】:

以上是关于如何从 music21 乐谱中获取所有钢琴部分?的主要内容,如果未能解决你的问题,请参考以下文章

Music21 Python 库将只输出钢琴声音

如何使用 Python 中的长笛乐器从音符制作 MIDI 文件(music21 库)

关于乐谱输入界面

Music21 关联 MuseScore 和 Lilypond

谷歌推出全能扒谱AI:只要听一遍歌曲,钢琴小提琴的乐谱全有了

music21 --> stream.chordify() 不工作