Как рассчитать продолжительность ноты в файле Midi с помощью MidoPython

Программы на Python
Anonymous
Как рассчитать продолжительность ноты в файле Midi с помощью Mido

Сообщение Anonymous »

Для этой программы я пытаюсь найти атрибуты Midi-файла, такие как частота и продолжительность каждой ноты, и сохранить их в базе данных (Sqlite3).
Мне это удалось. мне удалось выполнить частотную часть, однако мне не удалось заставить работать длительность каждой ноты.

Код: Выделить всё

import mido
import sqlite3

def midi_to_frequency(midi_note):
return 440 * (2 ** ((midi_note - 69) / 12))

midi_file = "Queen.mid"

con = sqlite3.connect('SciFair.db')
cur = con.cursor()

cur.execute('''CREATE TABLE IF NOT EXISTS frequencies
(id INTEGER PRIMARY KEY, frequency)''')

mid = mido.MidiFile(midi_file)

for msg in mid:
if msg.type == 'note_on':
frequency = midi_to_frequency(msg.note)
cur.execute("INSERT INTO frequencies (frequency) VALUES (?)", (frequency,))
print(frequency)

con.commit()
con.close()
Я пробовал использовать

Код: Выделить всё

msg.time
Однако, чтобы определить продолжительность каждой ноты, результаты оказались не лучшими. Например, когда я пытаюсь это сделать, иногда выводится значение «0» для длительности, что невозможно, поскольку она не может быть нотой, если у нее нет длительности.
Кроме того, насколько я понимаю Mido, он использует тики, а не секунды или какие-либо другие обычные показатели. Как мне преобразовать эти тики в секунды?
Есть предложения, как это сделать?

Подробнее здесь: https://stackoverflow.com/questions/781 ... using-mido

Вернуться в «Python»