Max/MSP/Jitter 官方教程翻译19 - 使用已命名矩阵的反馈

00 翻译自 Cycling74 的 Max/MSP/Jitter 官方文档:Max 7 - Tutorial 16: Using Named Jitter Matrices

本教程讲解在反馈循环(feedback loop)中使用命名的 jit.matrix 。我们将使用随机值矩阵来构建迭代过程(Conway’s Game of Life)。

教程 patch 用 jit.noise 生成随机值的初始矩阵:


jit.noise 对象

jit.noise 生成由随机值填充的矩阵。dim,planecount 和 type 属性确定输出矩阵(需要一个 80 x 60 单平面 char 数据矩阵)。jit.op 将随机单元格的值(初始为 0~255)设置为 false(0)或 true(255)。jit.op 的 > 运算符从右入口数字框中获取值并用于比较运算。如果单元格值小于该值,单元格的值将设置为 0,否则设置为 255。发送到 jit.noise 的 bang 将生成新的随机矩阵。

更改附加到 jit.op 的数字框。单击连接到 jit.noise 的按钮,每次都生成一个新矩阵。注意更大的比较值产生更少的白色(255)单元格。jit.op 下面的小 jit.pwindow 显示随机矩阵。单平面矩阵数据由 jit.pwindow 解析为灰度视频。

矩阵反馈

patch 顶部的量化(quantized)噪声从 jit.op 传到名为 cellular 的 jit.matrix


在反馈循环中有两个已命名的 jit.matrix

jit.matrix 接收来自 patch 顶部的 metro 的 bang,它连接到一个名为 jit.conway 的对象,其输出连接到另一个同名的 jit.matrix。结果是 jit.conway 的输出(无论它做什么)被写入跟其输入相同的矩阵中,从而创建反馈循环。

点击开关启动 metro。 patch 底部的 jit.pwindow 将显示 jit.conway 的输出。

如果想从一个新的随机矩阵开始,单击连到 jit.noise 的按钮,将新矩阵复制到反馈循环中。来自 jit.op 的矩阵会进入反馈循环中相同的 cellular 矩阵。

生命的游戏

jit.conway 对输入矩阵执行名叫 “Game of Life” 的简单元胞自动机算法。该算法由普林斯顿大学的 John Conway 发明,模拟食物供应有限环境中的有机生存周期。矩阵中的单元格被看做是活的(非 0)或死的(0)。比较每个单元与周围的单元。如果一个活细胞有两个或三个活的邻居,它就活着。如果多于或少于该数字,它将死亡(0)。如果死去的细胞恰好有三个活的邻居,它就会变为活的(255)。就这么简单。

每当 jit.conway 接收到输入矩阵时,会开始一轮生命游戏。因此,在反馈循环内使用对象是有意义的,可以看到在同一初始数据集上执行多代算法。

例如,初始随机矩阵:


一些随机矩阵值

jit.conway 在前四次迭代中生成以下矩阵:


在上面的数据集上 Game of Life 的前四代

使用随机矩阵 seeding 反馈循环后,可以打开 metro 并观察算法运行。Game of Life 的设计方式使得矩阵最终将稳定到一组自振荡 (self-oscillating) 细胞单元或空矩阵(a dead world)。在任何一种情况下,都可以 bang 一组新的数字重新开始。

小结

使用 jit.matrix 的 name 属性在 Jitter 中创建反馈循环。在对象链的任一端使用两个同名 jit.matrix,可以创建输出将被写入与输入来源相同的矩阵的链条。jit.noise 产生的任意随机数 type/dim/planecount 的矩阵。jit.conway 对输入矩阵做简单的元胞自动处理,在反馈回路中效果最好。



友情提示:独自折腾 Max 易患上癔症……不妨入群互助

👇👇👇

kidult00 wechat
扫码关注 00 的公众号
如果文章帮您节省时间或者解答疑问,不妨打个赏 :)