Разделить MIDI-файл для каждого бара в Python
Я хочу разделить MIDI-файл в Python на столбцы и получить примечания в этих столбцах. Поэтому я использую библиотеку music21 и могу получать заметки, но не могу разделить их по полосам. Я хочу знать, какие примечания находятся в столбце 1, а какие - в столбце 2. Надеюсь, я смогу помочь с этой проблемой. Спасибо.
1 ответ
В последних версиях music21 (версия 7+, выпущенная после того, как этот вопрос был впервые опубликован) вы можете просто загрузить MIDI-файл и выполнить итерацию для каждого такта, используя
.measure(num)
функция и проверка, есть ли в возвращаемом элементе какие-либо меры:
myScore = converter.parse('filename.mid')
i = 1
while (measureStack := myScore.measure(i))[stream.Measure]:
print(len(measureStack[note.Note]))
i += 1
До v7 вы захотите запустить
myScore.makeMeasures(inPlace=True)
перед запуском этого кода. (До v7 вы также захотите вызвать
.recurse().getElementsByClass(XXXX)
вместо
[XXXX]