MIDI 文件刻度转换为秒不加起来播放时间

问题描述

我使用 mido 模块通过此代码读取文件

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 (将#修改为@)