1

不同数量的列表存储在coll对象中。然后将一系列 bang 提供给随机整数生成器。随着每一次爆炸,生成的整数将决定哪个列表将从coll中删除。显然,这个数字必须在 1 和coll的不同长度之间。这意味着 RND 生成器必须在生成整数之前考虑到coll的任何更改长度。所以,我想我们有一个如下所示的电路:

  1. loadbang -ed消息“<strong>length”必须输入coll对象以使其输出其长度。
  2. 此长度数必须进入“<strong>between”(RND gen.)对象的右侧入口以设置其最大值。
  3. '<strong>between' 对象的左侧输入中的 bang 将生成一个随机整数
  4. 整数将返回到coll并使其输出相应的存储列表。
  5. 输出列表将被发送到迭代机制,该迭代机制将逐个读取和输出其原子。
  6. 当当前列表的最后一个原子被输出时,一个新的bang将被发送到 '<strong>between' 对象,以便选择一个新的列表并重复该过程(阶段 #3 - 6)。

上述过程的问题在于它偶然发现了coll对象的功能:一个coll从同一个出口输出它的长度和任何存储的数据(为什么,我想知道?),但是在像上面这样的过程中,长度coll必须只输出一次(在会话开始时),并且它应该只提供 '<strong>between' 对象(它不应该到达迭代机制,因为它是不相关的)。因此coll的长度和它的数据的路径一定是不同的,尽管它们都是整数并且它们都是从同一个出口出来的。

请问有什么想法吗?

4

3 回答 3

1

你调查过grab对象吗?它的接线有点违反直觉,但它对许多事情都是有用的对象,包括在您描述的那种情况下充当“断路器”。

设置grab对象使您能够将消息定向到对象的入口,然后仅收集与该消息关联的输出,而不会影响可能连接到同一出口的任何其他跳线。

于 2019-04-19T03:58:16.697 回答
1

我发布了一个回复,其中包含我为您敲定的解决方案,但版主将其删除。

所以我拍了一个屏幕截图,希望对你有帮助。

本质上,您可以将大量不同的消息(添加条目、选择条目、删除、重新编号......)输入 coll,而只有从 coll 出来的消息通过 1-in-2-out 开关。

开关的默认设置是将 coll 的输出路由到 multislider、消息框或任何地方。

但是,如果您想从 coll 捕获长度输出,请使用:[trigger 0 length 1] - 0 和 1 进入开关的左侧输入,而 'length' 进入 coll。

  • 首先发送开关一个 1 以将 coll 输出路由到您需要它去的地方
  • 然后向 coll 发送长度提示 - 它会传递开关的第二个输出
  • 然后用 0 关闭门 - 将 coll 的输出路由回正常位置

任何时候您需要更新长度(例如在添加或删除条目之后),您只需发送触发模块即可。 补丁截图

于 2020-01-05T10:38:01.363 回答
0

在过去的几天里,我通过使用 gswitch2 和触发器对象在消息的任一侧打开和关闭它来解决这个问题:[t 0 length 1]

coll 插入到 gswitch 中,因此它的消息仅在需要它们的那一刻被路由到长度函数,否则路由到需要 coll 内容的对象。

-exeterdown

于 2020-01-04T02:26:50.233 回答