如何解析MIDI文件中的音高、时值、bpm等信息并格式化?

如何解析MIDI文件中的音高、时值、bpm等信息并格式化?

题目描述

解析midi文件并格式化为音高和时值,多按音符同时按下不分割,空格分割抬起动作,如 G6A6B6,100ms G6,100ms G6,200ms

相关代码

import sys

import json

import mido

def midifile_to_dict(mid):

tracks = []

for track in mid.tracks:

tracks.append([vars(msg).copy() for msg in track])

return {

'ticks_per_beat': mid.ticks_per_beat,

'tracks': tracks,

}

mid = mido.MidiFile('midi_file.mid')

dict = midifile_to_dict(mid)

tempo = dict['tracks'][1][0]['tempo']

if (bpm == 0):

bpm = mido.tempo2bpm(tempo)

else:

tempo = mido.bpm2tempo(bpm)

print(json.dumps(

{

'code': 200, 'data': dict, 'bpm': int(bpm)

},

indent=2))

遇到的困难

逻辑转不过来了,我将所有的note_on和note_off全部提取出来,然后逐一进入循环判断音高并写入新的变量但还是遇到很多错误,涉及到休止符,多按键连按,多轨道同步

以上是 如何解析MIDI文件中的音高、时值、bpm等信息并格式化? 的全部内容, 来源链接: utcz.com/a/158254.html

回到顶部