如何使用 PureData 中的循环写入数组?
How to write to arrays using loops in PureData?
我在 Pure Data 中使用循环在数组中写入随机数。出于某种原因,在 loop one Pure Data 从索引 1 而不是 0 开始写入,并在循环后在索引 0 上完成,这不是我想要的。在 loop two 中,我找到了一个使用额外 [f]
和 [bang]
的解决方案,Pure Data 从索引 0 开始执行预期的操作。在这两种情况下,控制台都会打印数据相同的顺序(数字是随机的,顺序是相同的),只是反映数组的图形不同。
有谁知道为什么第一种情况失败而第二种情况有效?我的猜测是它与数据流入 [tabwrite]
的左右入口有关。
循环一
代码
控制台
图表(1.151 在索引 1 而不是索引 0 上)
循环二
代码
控制台
图表(1.742 在索引 0 上是正确的)
留言顺序。
您在 [f]
对象上有一个扇形输出。使用触发器 [t b f]
([trigger bang float]
的缩写)使顺序明确。如果您看到一个原子在一个输出上有多个连接,那就是一个危险信号!始终使用触发器对象,因为如果没有它们,您建立连接的顺序将是消息发送的顺序。这在补丁中是不可见的,所以应该避免!
阅读more about message order in the documentation of Pd
你的补丁还有一个问题。考虑这种情况:如果 NotasPor0it
为 8,计数器为 6,则 NotasPor0it
变为 4,select
对象 [sel]
将永远不会触发counter idiom 并继续计数...为避免此问题,您可以使用 'larger as' [>]
符号,或使用模数 (%) 解决它,如屏幕截图所示。
我在 Pure Data 中使用循环在数组中写入随机数。出于某种原因,在 loop one Pure Data 从索引 1 而不是 0 开始写入,并在循环后在索引 0 上完成,这不是我想要的。在 loop two 中,我找到了一个使用额外 [f]
和 [bang]
的解决方案,Pure Data 从索引 0 开始执行预期的操作。在这两种情况下,控制台都会打印数据相同的顺序(数字是随机的,顺序是相同的),只是反映数组的图形不同。
有谁知道为什么第一种情况失败而第二种情况有效?我的猜测是它与数据流入 [tabwrite]
的左右入口有关。
循环一
代码
控制台
图表(1.151 在索引 1 而不是索引 0 上)
循环二
代码
控制台
图表(1.742 在索引 0 上是正确的)
留言顺序。
您在 [f]
对象上有一个扇形输出。使用触发器 [t b f]
([trigger bang float]
的缩写)使顺序明确。如果您看到一个原子在一个输出上有多个连接,那就是一个危险信号!始终使用触发器对象,因为如果没有它们,您建立连接的顺序将是消息发送的顺序。这在补丁中是不可见的,所以应该避免!
阅读more about message order in the documentation of Pd
你的补丁还有一个问题。考虑这种情况:如果 NotasPor0it
为 8,计数器为 6,则 NotasPor0it
变为 4,select
对象 [sel]
将永远不会触发counter idiom 并继续计数...为避免此问题,您可以使用 'larger as' [>]
符号,或使用模数 (%) 解决它,如屏幕截图所示。