1、好像已知软件都无法达到这个midi音符时值随速度变化而变化的自动化操作。
在这方面唯一有可能的是那些具备脚本编程开放接口的宿主。目前这种宿主据我了解,只有Sonar与REAPER。Sonar靠的是CAL脚本编程,但它的编程中并没有可供读取的速度常量,所以此操作无法实现。
REAPER的脚本编程中是否有这种常量,不太清楚,只要有这种常量,就能实现这个操作。可以去了解一下。
2、乐谱所呈现出来的音符时值,都是特定的标准时值,不太可能标出首楼提到的时值随速度变化而变化以达到听感不变的时值效果吧?
比如之前的速度是100,下一段速度要变成87,那么所有的音符时值,包括节奏间距,就会相应的缩短13%,这在midi中手动操作是可以简单实现的,播放时听起来与之前的100速度效果是一样……
但这样的话,一个原本为480TK时值的音符,就应该变成417.6TK长(音符会自动四舍五入成无小数点状态),这个长度是一个很奇怪的长度,完全不在节拍上。包括两个音符之间原本相距960TK距离(休止符)的节奏,也就对应的变成835.2……这时的音符时值与节奏都会出现在非标准节拍上。
如果这样去出谱,导入出谱软件,音符几乎全部是混乱的节拍,完全没法看呀。
所以,可能是对楼主你的目标还是没有正确理解吧,感觉这样不但不能优化呈现乐谱,反而会完全无法出谱。
3、如果你只是将一首固定速度的
曲子,改成另外一个速度,听起来要保持原速度,只是所有的时值与节奏相应发生变化。那还是可以简单实现的。比如在Sonar中可以这样操作(其他软件估计同理,可能操作不一样):
打开需要修改的midi工程,走带跳到曲尾,查看一下这处的时间长度,记下来(比如是4分25秒)。然后改速度,此时midi总长度就肯定不在4分25秒位置了,然后全选所有事件,按下Ctrl键不放,再用鼠标拖动最后那个音符至4分25秒位置。整个midi就会被等比例拉伸或缩短到需要4分25秒才能播放完的状态。
但是正如上面提到过的,此时的midi音符将完全不在正常的拍子上,是无法出谱的。
另外,如果是一首中间不停变速,甚至变速频率很高,比如画了变速曲线的曲子,这个操作就麻烦到几乎不能实现了。
本帖最后由 溺水鱼 于 20-11-17 08:50 编辑