音频应用   音频插件联盟,正版插件,欢迎大家选择!

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 17678|回复: 0

[转载] Reaktor 之简单刷子功能

[复制链接]

182

积分

4

听众

80

音贝

音频应用

Rank: 1

积分
182
发表于 2018-9-4 | |阅读模式
音频应用公众号资讯免费发布推广
你是否有用FL Studio,如果有,那你应该不陌生它Piano Roll下的Paint功能。(图a)
3 z# Z$ `+ H- J9 e: R 7453_1536055986_thumb.png 5 u3 I& A; N' O  D, E$ W
图a
8 d( {/ G7 w% X+ _5 X今天要讲的就是基于这个功能原理在Reaktor实现一番。' u( Z8 @' c) J1 V) ?: h
首先一开始,我们需要创建一个类似button的grid,这个很简单,我们可以利用XY模块去实现,具体结构如图b所示:, G) j! }* E5 F! q
6397_1536055991_thumb.png
7 Z& r& d3 l( M, C5 A/ c1 Y# I8 U图b
7 a6 X/ X6 `! m; A1 m: k6 {' d在上面的XY模块,我设置了它的宽高都为20像素,并关掉了frame显示,然后足各复制8个,在面板上调整位置,让它们最终成图c那样:6 ^$ c6 h2 T; A. \
5187_1536055998_thumb.png
0 Z; w& U! S. P# o+ o7 J- E; i图c; m$ j2 `0 f5 l
为了确保大家能调整清楚,我特意把处于打开的模式;好的,接下来我们增加一个Mouse Area模块,并设置它的宽高为160像素*20像素,接着,我们来考虑需要用它哪些端口。' I4 P" G5 w) {/ Z2 X% ]0 {
首先,我们需要Mouse Area鼠标的位置来对应每个grid,这个X和PX端口都可以胜任,不过有一点区别是,PX端口在鼠标释放的时候仍然会触发事件发送,而X端口却没有,而这种情况是针对鼠标没有任何移动,仅仅只有点击释放动作,所以更理想的选择应该是PX。- t! ^1 y% M/ Q# d. L
接着,BL和BR端口肯定少不了的,BL负责刷激活状态,BR负责刷关闭状态,除了这两个,最后,我们还需要W端口,这个是Mouse Area的实际宽度值,为什么需要这个?原因在于我们想利用它去把PX端口输出的数值等比例缩小到0到1这个范围,这么做是想更好地去定位鼠标位置与grid的对应关系,当然如果不要这个W端口也行,前提是你要知道Mouse Area作用宽度值是多少。6 V% q( ^% Y$ |8 Y% ]2 k
OK,铺完前面的,我们进行接下来核心的处理,不用说,创建个Core Cell,命名为“Process”,添加相应的输入输出端口。(图d)
; z  c; i( j$ X& J5 H& F( X 3457_1536056004_thumb.png 2 M  l0 {' S+ C0 ~8 {+ W) [  p1 r
图d: V# D8 N* v9 ~" A
可以看出,我上面为了美观,把一些没必要的端口也添加进来,因此我们只需要把有用到的端口连接起来即可,然后点开“Process”这个Core Cell进入开始搭建。4 i( Z& }; B! Y; ^. t/ Q  e5 h
第一,我们要处理鼠标的定位问题,刚刚上面我已经提到了,要利用PX发送的事件数值和Mouse Area实际宽度值来处理;这个很简单,我们只要把PX发送的事件数值除以W输出的数值就可以了;当然这一步还不是完整的定位,要知道,我们有8个grid,所以最终的定位范围应该处于0到8之间,因此,我们还要再乘以8。(图e)1 G3 y% @9 _( z; N5 Z% a3 s
9624_1536056029_thumb.png
( }/ h, u6 t; D. G8 J图e
# ]0 u* [* v) o$ ^% x0 T" l0 ^7 X9 ]4 M现在范围已经在0到8之间了,但为了更好地分配每个grid对应好的状态值,我们还需要给这个范围值取整数处理,由于分配标识是从0到7的自然数,所以我们应该做向下取整处理,即floor处理;不过单单只有floor处理还不行,我们最好给它再限制范围,毕竟PX发送的数值会超出我们想要的范围,也尽管超出的范围可能不会对结果造成影响,但为了安全起见,我们还是有必要对它进行限制,也就是clip处理。(图f)) w/ n( R( y! {7 `* y/ R% Q- p
1689_1536056038_thumb.png
9 k! b$ g- |0 u. h4 R/ c, A: `图f- @+ K  x( t( g& b
行,我们已经完成了鼠标定位的问题,看吧,很简单吧,接着,我们要来创建个路由器,也就是分配器。(图g)- J4 n% v) J- R8 N+ Q" r& Y3 r% O
4540_1536056047_thumb.png * \; S( D+ I% E9 S# M: n: O- L
图g
+ Z0 R9 M. a0 t6 I& _' p& f可以看出上面这个分配器很简单,不过就是判断Pos是否等于某个数值,如果相等就输出In的数值到对应的输出端口,也正是利用这个实现grid状态的切换;好吧,最终搭建结果如图h所示:4 D* C# [0 v  ~1 T& z+ L& E& I' L
3176_1536056053_thumb.png
8 y' V  S- ~; G) `5 F% ]; y图h
% ~% {; `" c. F
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频招标|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表