问题描述
from mido import MidiFile as readSong
from mido import second2tick as sec2tick
from mido import tick2second as tick2sec
from tqdm import tqdm
def maxtick(relative_path_to_file):
song=readSong(relative_path_to_file)
tpb=song.ticks_per_beat
maxticktrack=0
for track in song.tracks:
isPiano=re.search(".*Piano|piano.*",track.name)
if (isPiano and len(track)>10):
total_tick=0
for msg in track:
total_tick+=msg.time
if (total_tick>maxticktrack):
maxticktrack=total_tick
print (mido.tick2second(maxticktrack,tpb,500000)
print (song.length)
基本上我将我想要的轨道按摩中的每个刻度加起来,然后将它们转换为第二个。并将它们与实际播放时间进行比较。我检查过节奏没有改变,我不知道发生了什么。
更多细节 tick2second 比实际轨道长度长多少。轨道是类型 1。 我以为我对这些可交换记号有一些错误的理解,但我不知道有什么问题。
(更新) 我尝试使用我自己的公式从刻度到秒进行计算。得到与函数给出的完全相等。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)