Напишите аккорды, используя MIDO в файл - PullRequest
0 голосов
/ 19 апреля 2020

Мне трудно писать аккорды в MIDI-файле, используя MIDO, MIDI-библиотеку для Python.

У меня есть список из 100 аккордов с нотами, сохраненными в списке. Таким образом, каждый аккорд в приведенном ниже коде [60, 63, 67], как в Cmin. Время каждого в секундах хранится в списке chordTimes.

Я повторяю в списке,

for i in range(1, len(chords)): 
    chordNotes = chordMidiNotes(chords[i], extraBass= False)[0]
    chordSymbol = chordMidiNotes(chords[i], extraBass= False)[1]
    for note_value in chordNotes: # result has chord notes
        track.append(Message('note_on', note=note_value, velocity=100, time=0))
    for note_value in chordNotes: # result has chord notes
        track.append(Message('note_off', note=note_value, velocity=127, time=time_in_ticks(chordTimes[i], mo)))
mo.save("songWithChords.mid") 

Но затем, когда я открываю файлы, аккорды начинаются одновременно, однако верхняя нота заканчивается непосредственно перед последними аккордами, ниже заканчивается до того, что перед последним останавливается снова несколько ударов перед ним, .... как вы видите на картинке. Я использую миди-файл типа 1.

Chords don't end at the same time

1 Ответ

1 голос
/ 19 апреля 2020

Документация MIDO гласит:

Все сообщения должны быть помечены дельта-временем (в тиках). (Дельта-время - это время ожидания до следующего сообщения.)

Таким образом, время дельты всех сообщений, кроме первого, должно быть равно нулю.

...