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