纯数据帮助。如何在Pd中使用条件逻辑

时间:2016-12-06 13:04:41

标签: puredata

我很困惑自己,需要你的帮助。 我试图在Pure Data中创建一个小函数,它表示当toggle打开时它会发送1但是当它不在时它会允许计算出的值通过。 / p>

因此,该计划的值为12,当计算值toggle未通过时,togggle开启时它发送1通过。

我会显示我的代码但是它的Pd,所以我无法复制并粘贴它。到目前为止,我的尝试是使用spigots,但无论1正在做什么,它仍然无法发送toggle,我知道计算的事实价值变化。

在普通代码中我会做类似的事情:

value = computedVal

if (toggle == 1) then return 1;

else return value;

4 个答案:

答案 0 :(得分:2)

这是使用解复用器习语的解决方案:

enter image description here

它基本上使用标签(01)为传入消息添加前缀,然后相应地路由数据。

通常,您应该学会在数据流中思考,而不是控制流:如何将数据传输到需要它的补丁的那一部分。 试图模仿控制流if ... then ...或更差while ... do ...)只会让你的大脑融化。

答案 1 :(得分:2)

更简单的解决方案,您可以将切换值设置为任意数字,0关闭,任何大于0的数字都会打开。

Solution

答案 2 :(得分:1)

解决这个问题的方法不止一种。假设您希望1每次computedVal toggle 1更改时发送require,它可能如下所示:

conditional statement

答案 3 :(得分:0)

最好从开始到结束保持流量相同(在这种情况下为 float )。您只能使用[f],[pack],[t b],[t b f]和[route]对象来制作解决方案。如果你感觉很奇怪,也许可以[交换]。 [spigot]对象对发送消息更有用。

另外,如果我理解正确,您可能在[切换]本身时遇到问题。给定任何非零值时,[toggle]对象将 on ,而 off 为零值。如果你给[切换]一个(1)或两个(2),它将在两种情况下表现为 。您可以使用[==]来修复此输出,它将输出true(1)或false(0),但前提是您提供类似[== 1]的参数。这样两(2)将注册为零(0),转[切换] 关闭,并返回您的值。

two alternative solutions

老实说,为了减少头痛和重新可用性和简单性,您应该考虑在工作流程中选择类似于puredata的固有true(1)和false(0)范例的模式。它将使您的逻辑在未来的工作中变得更加简单,并且更加类似于编码和模拟puredata的c逻辑。

这样,如果你的逻辑语句接受或返回零(0)为假而非零为真,它将更有效地在逻辑上运行'与其他预先建造的puredata对象。那你的逻辑可能是这样的:

more cohesive conditional logic

希望它有所帮助!