Reaktor 动手搭建 之Note Echo 和 Arpeggio

分享到微信朋友圈

· 曾照南 添加于 2017-07-16 · 暂无评论

作者:曾照南

首先Note Echo,翻译的话可以叫“音符回声”,实际上它就是一个音符接着一个音符地出现,这种效果好比延迟效果器,所以你可能认为这不就是音符重复的意思吗?!尽管Echo也有重复的意思,但觉得“重复”这词表达得不够广,因为Note Echo也有是不同音符接着不同音符。

好的,那么如果在Reaktor里搭建个Note Echo是什么样子呢?我们举个例子,首先假设一个音符经过Note Echo,那么这个音符会做什么改变?这个我们是无法知道的,有可能音符没变,也有可能音符变了,而所有这些都需要一个前提,那就是Note Echo需要让这个音符不变重复多少次或者是变化了多少次。(图1)

图1

很明显,从图1再回到Reaktor的事件角度上来看,无非就是数值事件的问题了,我们可以举个具体数值化的例子,比如一个数值60(这里可以看做是一个音高60的音符)的事件,我们怎么给它重复N次,注意这里的N次我们是没有一个特定的值,不过我们也给它一个具体的数值,比如重复10次,相信这个对Reaktor来说一点都不难,我们可以这样来实现。(图2)

图2

尽管上面可以实现重复数值事件10次,但其实我们还有一个更好地选择,那就是Iteration模块,它更直接方便。(图3)

图3

好吧,不过这个离Note Echo还有一段距离,实际上有了Iteration模块,接下来的问题就不难解决了,我可以马上给出结果。(图4)

图4

上面算是一个Note Echo了,不过对Iteration模块的属性需要设置,比如Iterations per Second应该设置多少,还有Limited Speed必须要打开。(图5)

图5

好的,到这里,我们想想这个Note Echo有什么问题吗?如果我们想要控制数值事件的个数,难吗?答案当然不难;那么如果我们想控制事件数值随事件触发做不同增量的变化难吗?答案当然也不难;那么再如果我们想控制数值事件触发的速率难吗?额...这个貌似也不难,但问题是不能灵活性地变动,也就说要想改变数值事件触发的速率,我们还是需要回到Iteration模块的属性里去设置Iterations per Second,所以实际上我们可以再去创建一个可调控的Iteration模块,相信这个不难,如果不解的话可以回过头看看我之前写的文章就会发现了。

行,短篇幅讲解Note Echo后,接下来我们要把重心放到Arpeggio身上。

什么叫Arpeggio呢?如果你去百度翻译一下,立马就知道它是“琶音”的意思,它就是一个音符不停地接着一个音符,注意Arpeggio跟Note Echo有点相似又不同,你可以理解Note Echo是Arpeggio的特殊化,可本质上却又是不一番的,尽管Arpeggio也是一个音符接着一个音符,但Arpeggio强调了“不停”这个词,我们可以举个简单的例子,比如一个音高60的音符,按增量1,变化个数4增加,那么它最终会得到60、61、62、63、64这样一串数字,也仅仅只有一串,意思就是到达64,它就自动停止了,不再增加,而如果把这个例子运用到了Arpeggio,结果那就大不相同了,尽管Arpeggio也会拥有这样一串数字,不过它会不停地重复这串数字,也就是说到达64后,它会再回到60继续开始增加。

好的,我们把Arpeggio具体用到和弦上去,假如我们按一个和弦,那么Arpeggio就会不停地播放和弦的组成音符,这样一来,我们就是要想想怎么在Reaktor实现这样的效果,就是当我们按几个音符组成的和弦,它能否按顺序播放相应和弦的几个音符,也就是你按下的那几个音。

我们想想Reaktor里有什么模块能帮我们实现上面的需求?可能你想到了,也可能你压根都不知道有什么模块,好吧,对于我来说,我首先想到的是Event Table这个模块(图6)。

图6

不过仅仅知道这个模块还不够,你要知道怎么用它,也就是在一开始,我们要先理清思路再来实践,这一步是很重要的;我们来想想,我们可以把按下的音符通过Event Table记录起来,比如我们可以给Event Table表长设置为128,表单元数值范围设置在0到127,这样一来我们就可以一一对应地记录下所有的音符;可能看到这里你已经开窍,要是你对Event Table模块多少有点了解的话,你立马会想说接下来可以读表了;没错,按道理是可以读表了,可有两个问题:

你按的几个音符有可能比较分散,不是连续的;

读表是要从0开始读,还是从你按的几个音当中的最低音符开始读呢?

首先对于第一个问题,我觉得这是普遍会遇到的,随便举个简单的大三和弦,它的组成音就已经不连续了,所以这个问题其实不是很重要,接下来主要是第二个问题,我们是要选择从哪里开始读表才是最重要的,如果你从0开始读表的,再把每次读表的结果应用到了音高触发上去,那么得到的音高声音会出现不连续的,很简单,我们可以给定一个速率来读表;同理如果从最低音符开始读的话,它依然也会出现问题,所以最好地办法是我们可以把读表的结果在通过另外一个新的Event Table保存起来,不过有点要注意的是,并不是所有的读表结果都保存起来,而仅仅只是保存大于0的结果,举个例子,分别按音高60、64、67这三个音,那么除了这三个音被保存到新的Event Table里以外,其他的结果都将被忽略。(图7)

图7

既然理清了思路,我们就可以开始在Reaktor实现它了,接下来我们会详细地讲解每一个步骤。

首先我们需要创建一个Event Table用来记录每一个音符,注意表长要设置128,也就是它的X值(图8):


图8

除了这个以外,我们还要设置表单元的数值范围,因为我们音符范围在0到127,所以按道理表单元也应该是要设置到这个范围(图9):

图9

好的,上面设置完后,我们就已经创建好一个Event Table,那么接下来怎么把你按的音符对应的音高数值一一对应到Event Table上去呢?很简单,我们只需要利用Note Pitch模块去实现就可以了:(图10)

图10

不过很快地,我们会发现上面有个问题,那就是释放音符后,之前被按过的音符仍然显示在Event Table显示图形上,所以这个时候我们倒可以跟Gate模块联系在一块:(图11)

图11

显然这已经有点符合我们的要求了,不过还不是最好的,因为我们还可以通过设置Voices数来改善它,比如我们可以设置Voices数等于8,这里为什么设置为8,是我觉得通常两个手能同时按8个音符已经很多了,当然你会说不是10个吗?!这都可以的,你设置可以把Voices设置得更大,但同时你也注意的一点是,Voices数越大,Reaktor对CPU的要求也就越高,所以最好的办法就是设置到适当的数值即可,这里我们就先以8为准开始。

设置完之后,你会发现Event Table完美记录了。好吧,记录的部分完成了,接下来总该读表了吧,不过有点要注意的,我们是先写入再读取的,这个顺序一定不能乱,所以其实上上面图11还可以这样改:


图12

好的,我们可以来实现保存的部分了,重新再创建一个Event Table模块,设置都跟第一个Event Table模块一样,那么怎么来实现保存的功能呢?首先从图7的思路来看的话,我们知道保存是按顺序来的,也就说大于0的数值会按顺序保存到新的Event Table里,比如拿上面的例子来说,60会写入到新的Event Table的第一个位置,而64会写入到新的Event Table的第二个位置,67就不用说了,肯定是第三个,既然是这样的话,那对于实现的话也不会很难,我们只需要判断读表数值结果是否大于0,如果大于0的话,就通过Counter模块来累计数值,并利用这个累计的数值作为新的Event Table写入的索引值。(图13)

图13

但有一点还需要注意的,如果我们再重新按一个音符进来,也就是说从三个音符变成四个音符的话,那么写入的结果会变化吗?这个答案当然是会变化,原因在于你没对Counter模块进行初始化限制,也就是不管多少音符被按下,每次都要初始化Counter模块,让它从0开始累计,而且也还要注意仅仅只有一次初始化。(图14)

图14

尽管上面已经帮我们解决了一大问题了,但仍然存在一个问题,那就是我们在所有按键被释放后才会让第二个Event Table表内所有数值都恢复为0,可实际操作显示是有问题,只要我们释放任意一个音符,其他音符还按着的状态的话,第二个Event Table图形上显示的会是全部都等于0,因此我们还需要借助Gate的部分来实现判断被按下的键个数,如果被按键的个数等于0的时候,第二个Event Table才会全部变化到0,具体Gate判断按键个数搭建内部结构如下图所示:(图15)


图15

好吧,上面已经是解决主要问题了,不过貌似结果还是有错误,比如你按五个音符后又切换到四个音符的话,那么最后一个音符,也就是前面按五个音符时候所落下的最后一个音符依然还在,所以我们还需要对它进行改善,最好的方法就是从一开始就先给第二个Event Table表内所有的数值都回归到0,然后再进行接下来的写入,这样一来就真的解决了Arpeggio的最重要的问题了,那么后面读的部门就问题不大了,最后给从结果,可能搭建有点变动及其错乱(主要还是连线视觉上有点混乱),不过思路是对。(图16)

图16



可下载 Midifan for iOS 应用在手机或平板上阅读(直接在App Store里搜索Midifan即可找到,或扫描下面的二维码直接下载),在 iPad 或 iPhone 上下载并阅读。


文章出处:http://magazine.midifan.com/detail.php?month=2017-07#19做人要厚道,转载文章请注明出自 midifan.com,谢谢

暂无评论

添加评论