Код: Выделить всё
[[60, 0, 0.25, 1], [62, 0.25, 0.50, 1]]# the format is [note, start-time, stop-time, miditrack]
следующий код создает словарь, в котором дельта-время преобразуется в линейное время (но я не уверен, что это правильный подход):
Код: Выделить всё
from mido import MidiFile
mid = MidiFile('testsunvox.mid')
midimsgs = []
# Put all note on/off in midinote as dictionary
for i in mid:
if i.type == 'note_on' or i.type == 'note_off':
midimsgs.append(i.dict())
# change time values from delta to relative time # don't know for sure if this is the right way...
mem1=0
for i in midimsgs:
time = i['time'] + mem1
i['time'] = time
mem1 = i['time']
# put note, starttime, stoptime, as nested list in a list. # format is [note, start, stop, channel]
for i in midimsgs:
print (i)
Код: Выделить всё
[note, note_on(time), note_off(time), channel]
Подробнее здесь: https://stackoverflow.com/questions/631 ... -in-a-list