Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2011-09-08 14:26:18 un patch "if...then...else"

space47
membre
Date d'inscription: 2011-06-13
Messages: 11

un patch "if...then...else"



Salut à tous!

Depuis quelques mois maintenant, je bosse sur Pure data afin de bâtir une projection  réagissant au son afin d'aggrémenter mes concerts. Ce projet est déjà bien avancé...

Mais trêve de paroles inutiles, c'était juste histoire de me présenter...Et histoire aussi de dire que je suis encore un novice dans pure data...

Ayant fait pas mal de code auparavant (lingo, un peu de C, html, php ....), j'étais habitué à me servir très souvent de la fonction if. Cependant après plusieurs recherches celle-ci n'existe pas explicitement. Donc je faisais par exemple:

$1
|
> 5
|
sel 0 1
|       |     
true   False

Je trouvais cette métrodes parfois fastidieuse. C'est pourquoi j'ai créé un patch "if...then...else" afin de comparer deux valeurs et en plaçant l'opérateur logique désiré. Il est possible qu'il existe une méthode plus simple (je suis encore bien novice), et si il est utile à qqn, j'aurais alors servi la cause! Ou c'est peut-être parfaitement inutil...Dans ce cas, et bien ce n'est pas grave, ce patch aurai donc le mérite de m'avoir fait bosser quelques notions bien utiles par la suite (en plus d'avoir le mérite d'exister!)

Mon patch fonctionne de la manière suivante:

Bang
|
if 5 == 4
|          |
bang     bang
si vrai   si faux

Avec mon patch, on peut modifier la première valeur dans l'entrée froide de droite:

Bang    50
|          |
if 5 == 4
|          |
bang     bang
si vrai   si faux

mon patch : (en téléchargement à la fin)

#N canvas 5 25 1338 655 10;
#X obj 796 -182 outlet;
#X obj 886 -185 outlet;
#N canvas 629 290 450 300 if2 0;
#X restore 707 318 pd if2;
#X obj 21 481 s pd-if2;
#X msg 12 25 obj 1 1 r bangif;
#X msg 113 143 obj 100 100 != 18;
#X msg 62 84 obj 100 75 f 18;
#X msg 91 112 connect 0 0 1 0;
#X msg 140 176 connect 1 0 2 0;
#X msg 182 240 connect 2 0 3 0;
#X msg 193 271 obj 100 150 s then;
#X msg 202 299 connect 3 0 4 0;
#X msg 240 354 connect 3 1 5 0;
#X msg 217 325 obj 150 150 s else;
#X obj 796 -215 r then;
#X obj 886 -216 r else;
#X obj 286 -145 s2l;
#X msg 367 -28 set obj 100 100 != \$1;
#X msg 673 -45 18;
#X obj 12 -15 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 240 414 s bangif;
#X obj 240 390 t b;
#X obj 922 -253 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 1003 -250 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 311 457 \; pd-if2 clear;
#X obj 592 -73 t b;
#X obj 236 -296 inlet;
#X symbolatom 285 -180 10 0 0 0 - - -;
#X obj 238 -221 f \$1;
#X floatatom 235 -182 5 0 0 0 - - -;
#X floatatom 362 -181 5 0 0 0 - - -;
#X obj 311 407 delay 50;
#X msg 230 -28 set obj 100 75 f \$1;
#X msg 306 -110 set set obj 100 100 \$1 \, adddollar 1;
#X msg 156 211 obj 100 125 sel 1 0;
#X obj 569 -296 inlet;
#X obj 287 -218 symbol \$2;
#X obj 360 -218 f \$3;
#X msg 592 -165 set \$1;
#X obj 331 40 t b;
#X obj 401 38 t b;
#X obj 372 92 +;
#X msg 350 70 1;
#X msg 392 69 1;
#X obj 372 113 sel 2;
#X msg 416 381 0;
#X obj 165 -268 delay 10;
#X connect 4 0 3 0;
#X connect 4 0 6 0;
#X connect 5 0 3 0;
#X connect 5 0 8 0;
#X connect 6 0 3 0;
#X connect 6 0 7 0;
#X connect 7 0 3 0;
#X connect 7 0 5 0;
#X connect 8 0 3 0;
#X connect 8 0 34 0;
#X connect 9 0 3 0;
#X connect 9 0 10 0;
#X connect 10 0 3 0;
#X connect 10 0 11 0;
#X connect 11 0 3 0;
#X connect 11 0 13 0;
#X connect 12 0 3 0;
#X connect 12 0 21 0;
#X connect 13 0 3 0;
#X connect 13 0 12 0;
#X connect 14 0 0 0;
#X connect 14 0 22 0;
#X connect 15 0 1 0;
#X connect 15 0 23 0;
#X connect 16 0 33 0;
#X connect 17 0 5 0;
#X connect 17 0 40 0;
#X connect 18 0 17 0;
#X connect 19 0 4 0;
#X connect 21 0 20 0;
#X connect 21 0 31 0;
#X connect 25 0 18 0;
#X connect 26 0 28 0;
#X connect 26 0 36 0;
#X connect 26 0 37 0;
#X connect 26 0 46 0;
#X connect 27 0 16 0;
#X connect 28 0 29 0;
#X connect 29 0 32 0;
#X connect 30 0 38 0;
#X connect 31 0 24 0;
#X connect 31 0 45 0;
#X connect 32 0 6 0;
#X connect 32 0 39 0;
#X connect 33 0 17 0;
#X connect 33 0 25 0;
#X connect 34 0 3 0;
#X connect 34 0 9 0;
#X connect 35 0 28 1;
#X connect 36 0 27 0;
#X connect 37 0 30 0;
#X connect 38 0 18 0;
#X connect 38 0 25 0;
#X connect 39 0 42 0;
#X connect 40 0 43 0;
#X connect 41 0 44 0;
#X connect 42 0 41 0;
#X connect 43 0 41 1;
#X connect 44 0 19 0;
#X connect 45 0 41 0;
#X connect 45 0 41 1;
#X connect 46 0 28 0;
#X connect 46 0 36 0;
#X connect 46 0 37 0;

Dernière modification par space47 (2011-09-08 14:29:37)

Hors ligne

 

#2 2011-09-08 14:45:43 Re : un patch "if...then...else"

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: un patch "if...then...else"



bien joué!
Ceci étant, la boite [expr] ne ferait elle pas le même boulôt?

Hors ligne

 

#3 2011-09-08 14:47:26 Re : un patch "if...then...else"

space47
membre
Date d'inscription: 2011-06-13
Messages: 11

Re: un patch "if...then...else"



Je ne sais pas, je ne connais pas cette boîte....


je vais regarder ce que c'est !

Hors ligne

 

#4 2011-09-08 15:01:00 Re : un patch "if...then...else"

pob
Exterminator
Lieu: Rennes
Date d'inscription: 2009-10-13
Messages: 765
Site web

Re: un patch "if...then...else"



On peut aussi faire plein de choses avec [route], [relay] et [moses] en plus de [sel] et [expr].
Faut juste pas chercher à faire mot pour mot ce qui se fait dans les autres langages de programmation ! wink

Hors ligne

 

#5 2011-09-08 15:06:01 Re : un patch "if...then...else"

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: un patch "if...then...else"



Sinon, tu peux remplacer les delay par des toggles [t b b b b etc] qui envoient le signal de droite à gauche, c'est pratique, du coup si tu veux que ton entrée froide devienne "chaude" tu écrit [t b f], et tu envoie le float au froid et le bang au chaud!

Hors ligne

 

#6 2011-09-08 18:11:34 Re : un patch "if...then...else"

space47
membre
Date d'inscription: 2011-06-13
Messages: 11

Re: un patch "if...then...else"



ok génial merci pour tout ça !

Oui je connais déjà route toggle etc.... je voulais juste faire une boîte "if" afin de poser des conditions facilement avec une seule boîte et non deux .... (qui est d'ailleurs tout aussi facile mais bon c'est histoire de ....)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024