微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。