我有两个.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年后,可以试试这个!否则,我希望这可以帮助别人谁今天醒了和我一样,是抓我的头想轻松解决这个问题。

我也有类似兴趣的职位。我只是碰到这种库,它看起来非常有前途就来了:

http://web.mit.edu/music21/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top