多轨道节拍器同步

同步节拍在Sonic pi设置中有些特殊。

如果目标只是编写一段可以播放音乐的程序,那么并不需要同步节拍的指令。

但是在Live Coding的情况下,每一个轨道创建都有先后顺序,即便已经设定全局bpm也不能保证不同轨道能保持节拍一致。原因是每新建一个轨道,即被视作创建一个独立的线程。如果相互之间不做同步设置,那么新线程播放的时机以更新程序的时间为准,而已有的线程还是在不停looping.这和Ableton live的live session模式下,每个clip会同步播放的状况是完全不同的。

Sonic Pi如果要达到Ableton上述效果,思路是创建一个空白轨道,将其视作节拍器,并且只用来打点。之后添加的打击乐轨道或乐器轨道都要与之同步。

同步节拍

用做节拍器的空白轨道看起来应该是这样的:

live_loop :metronome do
    cue: tick
    sleep 0.25
end

cue表示每隔1/4排会发信给接收他信号的轨道,为了匹配信号,需要用:tick以验明正身(名称可以自己修改)。

相应的,与之同步的鼓轨道简单写法是这样的:

live_loop :kick do
    sync :tick
    sample :YourKickSample#在这里填入你喜欢的鼓sample
end

因为节拍器已经定下1/4拍发信,所以这里就不用再写sleep 0.25

需要注意的问题

我曾经为了偷懒,把一个鼓组拆成两个轨道,比如一轨是有一些节奏的鼓,然后Hihat与前一轨的节拍同步。但是在使用一些修改节奏的语句时,节拍器就出问题了。

以下是之前被同步的,被视为节拍器的轨道:

live_loop :kick do
    cue :tick
    sample :kick, amp:  1 if (spread 5,7)
    sleep 0.25
end

此时其它轨道用sync :tick与之同步会出现停滞,原因是即便:kick轨已经设置sleep 0.25,但并不保证它会在每1/4拍的时候正常发信,(spread 5,7)指令搅乱了发信的频率。这是我在实际使用时发现的问题。所以一个轨道只做一件事,才最保险。

脚本OR商业软件

当然,可能你会觉得这个脚本写起来太麻烦了,还是商业软件好用。不过,麻烦也不一定都是坏事。比如在这种情况下实现piano phase就变得简单了(参见第三章第四节:极简音乐)。为了让两组轨道在loop时产生细微的时间差,只需要单独创建两个节拍器,一个设置sleep 0.25,另一个则为sleep 0.23。之后分别让两组乐器与这两个节拍器同步即可。

有趣的事情是,这种在商业软件上约定俗成的功能放在开源软件上就需要自己写出来。也就是说,在sonic pi的世界里,并没有严格要求两个轨道必须同步这件事。但是你在Ableton内新建工程,同步就是那么顺理成章。

有时候我也不得不承认,是不是工具优先于创作者决定了作品的一些特质(虽然有人肯定不认同我),毕竟使用某种工具会使某种风格作品更容易被制作。而工具的发明者,起初是因为想要制作特定类型的作品才决定开发某种工具,所以这一工具在诞生之后让同类型作品更容易被生产。

而工具的使用者,虽然并不是有意的,但他们的工作流事实上继承了工具制作者背后的逻辑与哲学。如果某一工具用户众多,甚至会影响未来的发展趋势。从这个角度来看,工具的创造者似乎决定了非常多的东西(虽然你不记得他们的名字)。

results matching ""

    No results matching ""