Nodes / 节点
在 patch 中,节点就是主要的创建模块。有不同的节点类型:
- Static Operation node / 静态运算器节点
- process node / 过程节点
- record node
- class node
Operation Nodes / 运算器节点
运算器节点蕴含着简单的运算。
把静态运算器节点从其他运算节点中区分开来是很有帮助的。他们看起来很简单,他们也不会带有状态等等。他们不会在连续的调用中储存任何数据。
Record nodes 和 class nodes 分别是他们所属的记录和类运算的一部分。数据类型的名字将会以比较小的单词显示在节点名字的下方。
Process Nodes / 过程节点
一个 process node (过程节点) 代表一个 patch (草图) 的实例。之所以叫“Process”是因为它可以被理解为像一台持续运转的小机器,它被创建之后就可以在一帧到下一帧之间存储自己的状态。
同时请查看 Datatype Patch
任何带有小箭头标志的节点意味着在它的背后有一个完整的 patch (草图)。你可以双击节点打开那个草图,也可以右键 > Open
打开。
Pin group
Spread 类型的针脚可以改为被叫做 Pin Group 的方式,对于这样的节点你可以通过按下 CTRL
+
和 CTRL
-
来增加和减少针脚(就像 Group 和 Cons一样)。如果想要实现这一点,你需要对于input输入修改它的设置。通过 context-menu > Configure
来打开 Configure Menu ,然后点击将 pin Group 的选项打开。
Apply pin
如果一个节点它的第一个输入和第一个输出设为相同的数据类型,你可以通过 context-menu > Configure
给这个节点设置一个 Apply 针脚。如果 apply 被设置为 false,那么这个 Operation 就会被略过,输入数值将会原封不动地被输出出来。
个人笔记
Record vs Class
Record 和 Class 是更加复杂的运算器节点,它们比静态运算节点更进一步,让你可以参与定义这个节点的生命周期,定义更加复杂的多个操作等等。这也就是为什么当我们完成对一个 Record 的定义之后,在实例化这个 Record 的时候,并不是使用一个节点,而是找到了一个目录,里面有一堆节点。通过使用这些节点就可以完成更精细化地操作,对于生命周期等等的操作。
当然 Record 和 Class 之间也是有差别的,即两者分别是 immutable(不可更改方式)和 mutable(可更改方式)的。
Record 当使用 Record 对数据流进行操作的时候,因为它是使用 immutable 的方式,它都会对数据做一次拷贝再操作。
Class 当使用 Class 对数据流进行操作的时候,因为它是使用 mutable 的方式的,它会对源数据直接进行操作。
就有点像黑胶唱片与磁带的区别。当我们想要修改黑胶唱片的数据的数据的时候(比如调整两首歌的顺序),我们没有什么好办法,因为它们是物理的,我们只能重新拷贝一份。但是对于磁带就可以直接抹去重新录制一遍。可以看出每次对数据做修改的时候,以黑胶唱片作为媒介的话,我们得每次都重新拿一张新的空白黑胶来拷贝,而拿磁带作为媒介的话,从头到尾都可以是同一盘磁带。
在日常使用中,因为 Class 操作的方式会更改数据源,因而对于数据流方式编程的话,就有更多犯错误的可能性(比如不知道在何处更改了数据之类的),所以大多数情况就使用 Record 就行。当 Record 无法满足的情况下再考虑 Class 会比较好。