题
我有两个.MID和.KAR格式提供一些歌曲的背景音乐,但在每一种情况下,它被稍快,我想打。什么是创建具有相同的内容,但以较慢的速度无论是.MID或.KAR文件最简单的办法 - 比如,一个由25%放缓了20%左右,另外15%,第三,等等?
在理想情况下,我宁愿一个跨平台的Python脚本(因为这将使我的源收敛轻松地调整试验,以我想;-)效果确切,但我会采取任何免费的解决方案,在运行Linux操作系统(Ubuntu的8.04如果它的事项)和Mac(Mac OS X的10.5,但10.6兼容性优选)。
解决方案
您可以编辑该文件,按照 http://www.sonicspot.com/guide /midifiles.html
虽然有可能是一个MIDI读/写库了。事实上,这是看到了相关问题的问题:简单,跨平台MIDI库为Python
设定的速度
此元事件设置 在条款顺序节奏 每个四分音符这是微秒 在三个字节编码。它通常是 在第一音轨块中发现, 时间对准发生在同一时间 作为MIDI时钟信息,以促进 更精确的同步。如果不 集速度事件存在时,120次 每分钟假设。下列 公式的可用于翻译 从每微秒节奏 四分音符,以每分钟的节拍和 回来。
MICROSECONDS_PER_MINUTE = 60000000 BPM = MICROSECONDS_PER_MINUTE / MPQN MPQN = MICROSECONDS_PER_MINUTE / BPM
Meta Event Type Length Microseconds/Quarter-Note 255 (0xFF) 81 (0x51) 3 0-8355711
其他提示
由于Vinko说,你可以编辑midifile,但因为它是一个二进制格式,挤进可能比特数最少的,它有助于对大家有帮助。
这是一个midi到文本转换器(和反之亦然):结果 http://midicomp.opensrc.org/ 结果 我一直在使用它相当多最近。这是很容易做到的文字处理(例如搜索与“天宝”行)进行简单的操作,一旦你有midifile为文本。还没有尝试过在MAC(编译在Ubuntu 8.04没问题)。
关于midifile速度具体地讲,它很容易由于在“滴答”,其真正的持续时间(秒)是由速度参数来确定在Vinko的引用中描述的术语是指定的事件的定时以减慢或加快播放。我相信时间的签名也不是那么相关的,主要是为了在MIDI音序器打开时正确显示条/次。
此外,除了pyPortMidi,还有几个其他蟒MIDI模块周围。
[嗯...看来我只能张贴在每个链接后,作为一个新的用户。我会尽力张贴链接到Python模块中的一对夫妇的意见或另一对夫妇的答案...]
您可以使用 music21 要做到这一点,虽然我只测试它在OSX 10.10.1。
import music21
fctr = 1.25 # scale (in this case stretch) the overall tempo by this factor
score = music21.converter.parse('song.mid')
newscore = score.scaleOffsets(fctr).scaleDurations(fctr)
newscore.write('midi','song_slow.mid')
偏移就像每个音符的时间戳,和持续时间是音符多久响起,相信应用相同的缩放因子,以各是一种像调节速度。
如果你像我一样,那么你在听同样的歌7年后,可以试试这个!否则,我希望这可以帮助别人谁今天醒了和我一样,是抓我的头想轻松解决这个问题。
我也有类似兴趣的职位。我只是碰到这种库,它看起来非常有前途就来了: