Как я могу получить все партии фортепиано из партитуры music21?

Я могу получить все части в 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 на любую другую музыку21. инструмент для извлечения других инструментов

Другие вопросы по тегам