Разделить 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]

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