2016-12-06 3 views
1

Je me suis beaucoup confus et j'ai besoin de votre aide. Je suis en train de faire une petite fonction dans Pure Data qui dit lorsque le toggle est sur elle envoie un 1 mais quand il est pas sur elle permet à la valeur calculée par.Aide Pure Data. Comment utiliser la logique conditionnelle dans Pd

Ainsi, le programme fonctionne une valeur 1 ou 2 et lorsque le toggle est pas sur la valeur calculée est acceptée, mais quand le togggle est sur elle envoie 1 par.

Je montrerais mon code mais son Pd ainsi je ne peux pas le copier et le coller. Ma tentative jusqu'à présent fait usage de spigots mais cela ne fonctionne pas encore en envoyant 1 à travers ce que fait le toggle, et je sais pertinemment que la valeur calculée change.

En code normal, je ferais quelque chose comme:

value = computedVal 

if (toggle == 1) then return 1; 

else return value; 

Répondre

1

Il y a plus d'une façon de résoudre ce problème. En supposant que vous voulez un 1 à envoyer à chaque fois que les computedVal changements tout en toggle est 1, il pourrait ressembler à ceci:

conditional statement

1

Voici une solution en utilisant un langage démultiplexeur:

enter image description here

il préfixe fondamentalement le message entrant avec une étiquette (0 ou 1), puis acheminer les données en conséquence.

En général, vous devez apprendre à penser en flux de données, plutôt que flux de contrôle: comment obtenez-vous les données à cette partie du patch où il est nécessaire. Essayer de mimer flux de contrôle (if ... then ..., ou pire while ... do ...) ne fera que faire fondre votre cerveau.

0

Il est préférable de garder le flux du même type du début à la fin (dans ce cas, un flotteur ). Vous pouvez créer une solution en utilisant uniquement les objets [f], [pack], [t b], [t b f] et [route]. Peut-être un [échange] si vous vous sentez chic. L'objet [spigot] est plus utile pour pas l'envoi de messages. De plus, si je comprends bien, vous pourriez avoir des problèmes avec [toggle] lui-même. L'objet [bascule] sera sur étant donné toute valeur non nulle et sur avec une valeur nulle. Si vous donnez [Toggle] un (1) ou deux (2) il agira comme si elle est sur dans les deux cas. Vous pouvez utiliser [==] pour corriger ce qui produira un vrai (1) ou un faux (0) mais seulement si vous fournissez un argument comme [== 1]. De cette façon, deux (2) enregistrera un zéro (0), tourner [bascule] hors et retourner votre valeur.

two alternative solutions

Honnêtement, pour moins de maux de tête et re la convivialité et la simplicité, vous devriez envisager de choisir un modèle dans votre flux de travail similaire à inhérente de PureData vrai (1) et le paradigme faux (0). Cela rendra la logique beaucoup plus simple dans vos projets futurs et ressemble beaucoup plus à la logique C dans laquelle puredata est codé et émule. De cette façon, si votre instruction logique accepte ou retourne un zéro (0) comme faux et un non nul comme vrai, il fonctionnera plus logiquement avec d'autres objets prédéfinis prédéfinis. Ensuite, votre logique pourrait ressembler à ceci:

more cohesive conditional logic

espère que ça aide!

1

solution beaucoup plus simple, et vous pouvez définir la valeur de bascule à un nombre quelconque, 0 est désactivé, un nombre supérieur à 0 est activé.

Solution

+0

plus simple que la solution? aussi, pour l'instant * chaque * réponse à cette question avait "0 est * off *, tout autre nombre est * sur *" –