录音/制作/创作 吉他 扩声技术 视频技术 作品展示 生活 信息 更多... | 音频应用专卖店

[教程] 你好,事件循环

( 8 )
 
[收藏]
#1 14-4-16 13:41

你好,事件循环


436
Reaktor下编辑工程的很多类情况下,你都会遇到一类问题,那就是事件循环;要知道Reaktor除了声音信号处理这一大类,另外一大类便是事件处理,而且这一类的处理复杂性可以等同声音信号处理。

循环,估计很多编程的人对这个词不陌生,因为他们很怕死循环,而对于Reaktor里的事件问题,同样也是很怕这个,因为它会导致一些错误。

那么究竟在Reaktor里发生的事件循环是怎样的呢?该如何解决呢?

首先,我们可以来看看一种情况,很多人都用用过三位数锁密码的皮箱,每位数的范围都在09,它是通过滚轮的方式来显示,也就是无论你怎么滑动滚轮,它的数值都是在09这个之间显示,这就是一个循环,当然这个循环不会提示错误,因为它并没有错误,对于锁皮箱来说是一个好的方案设计。

其实从上面皮箱的例子我们可以得出一个问题,就是在Reaktor里,你是否能做到让一个数值在一个固定的范围内循环?你可能会觉得这还不简单吗,添加个累计模块,然后用个比较模块让超出的数值回归到起点位置不就得了吗?于是你开始根据这个思路在Reaktor着手操作起来了,于是你有了下面这样的结果:

这个看上去似乎没有啥问题,在逻辑上也是可行的,不过当你不停地按那个Trigger按钮,数值显示不停地增加,突然等到数值显示为10的时候,来了,你的问题终于来了。

没错,这个就是主题,事件循环。
这个时候你可能会着急,开始想究竟这是什么情况,想想有没有解决的办法;其实很多人忽略了Reaktor事件本身,在Primary Level,事件的处理在逻辑处理上可以认为是同步的,也就是说对上面的事件处理可以看做是一次性完成,因为上面的构建会让人联想到声音信号反馈处理的情况,我们会认为事件处理也能实现反馈,因此你会认为那个Accumulator模块上面的Set会晚一步被处理,所以我们现在要做的就是安排事件处理的顺序,让Accumulator模块被初始化的事件推后处理。

那么这个时候你会问,有啥模块可以实现这一点呢?其实Reaktor已经为我们提供一个这样功能的模块了,它就是事件顺序处理Order模块。

注意Order模块有3个输出,分别标识为1、2、3,它的功能就是把事件处理分成三次处理,下一个事件要等上一个事件完成后才开始处理。

尽管有了Order模块,但如果你把Trigger按钮作为事件处理的开始,你会发现问题变得棘手起来,其实你已经意识到Compare比较模块在这里成了你思考问题的阻碍,你会一直围绕着它旋转。


好吧,索性我们不要Compare模块,其实我们还有更好的解决办法,那就是利用Modulo模块,你可以把这个当作是个组合两种计算符的模块,一个是求余,一个是求除,于是利用这个模块,我们可以这样构建:


分析
Trigger模块发出一个带有数值1的事件,被Order模块处理,接着Order先处理连接到第1输出的所有模块,首先第一个是Accumulator模块被处理,在数值1事件的触发下,Accumulator模块内部数值从0变化到1,然后发送到其Out输出,接着这个数值1再经过Modulo模块求余,仍然得到相同的数值1,再紧接着这个数值进入了Value模块的处理,尽管Value模块内部的数值已经被这个数值1改变了,但在它的输出仍然是数值0的状态,因为它没有被触发,这里Order模块第1输出后面的所有模块都已经被处理完了,接下来就是处理第2输出后面所有的模块,我们可以看到第2输出连接到Value模块的Trig输入并触发它最终的输出,也就是说现在Value模块输出的数值已经变成1了,接着这个数值便进入Accumulator模块的Set输入,从而改变了Accumulator模块内部的数值,并发送到其输出,因此这样的构建有效地让我们避免了事件循环。


[ 本帖最后由 vjkuku 于 14-4-16 13:53 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

775
#2 14-4-16 14:05
也,高手哦,敢折腾Reaktor的不多,支持下

436
#3 14-4-16 14:15

回复 xoandxo 在 #2 的 pid=4166325 的贴子

感谢支持

1166
#4 14-4-16 14:45
这个不错,谢谢楼主分享知识,顶!

1255
#5 14-4-16 15:27
高级文章,先收藏,以后水平到了应该能用上

60
#6 14-4-16 17:00
高端!

14169
#7 14-4-16 19:01
因为不用Reaktor,存支持这么认真的文章。

403
#8 14-4-16 19:44
又是一个高手

18
#9 14-4-17 10:49
新人来学习的,很不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

搜索