Midi - как получить все заметки для уточненных c секунд - PullRequest
0 голосов
/ 03 февраля 2020

Я нахожусь в середине проекта и, к сожалению, мало что знаю о файлах MIDI. Я использую библиотеку python для файлов MIDI .

Основной вопрос заключается в том, как получить все заметки (сообщения) для заданного c времени && дорожки (например, 1:20 до 1:21)

Другая проблема: в некоторых файлах MIDI у нас разные скорости темпа. Я могу решить эту проблему, посчитав время и скорость, но я не знаю, как преобразовать эти числа во Второе и применить разные темпы.

1 Ответ

2 голосов
/ 03 февраля 2020

Вместо этой библиотеки (которая, кажется, в настоящее время не поддерживается) вы можете использовать другую, предоставляющую время в секундах из коробки для каждого события, например, используя pretty-midi - документы (python 3):

import pretty_midi
midi_data = pretty_midi.PrettyMIDI('example.mid')
print("duration:",midi_data.get_end_time())
print(f'{"note":>10} {"start":>10} {"end":>10}')
for instrument in midi_data.instruments:
    print("instrument:", instrument.program);
    for note in instrument.notes:
        print(f'{note.pitch:10} {note.start:10} {note.end:10}')

Вы можете отфильтровать события заметки по note.start и note.end разам, уже вычисленным в секундах.

...