#N canvas 44 74 1007 677 10; #X floatatom 19 530 0 0 0 0 - - -; #X msg 83 488 1; #X msg 49 488 54; #X msg 19 488 23; #X msg 52 126 6; #X obj 19 165 select 6; #X msg 19 125 234; #X floatatom 19 147 0 0 0 0 - - -; #X obj 19 560 select 23 54 1; #X obj 46 10 select; #X text 91 9 - compare numbers or symbols; #X text 19 38 This object can be abbreviated as; #X obj 271 37 sel; #X text 19 55 In its simplest form shown below \, [select] checks its input agains the constant "6" (which is defined by the creation argument). If they match \, the first outlet gives "bang" \; otherwise the input is simply sent through to the second outlet.; #X obj 19 187 print match; #X obj 98 187 print NO_match; #X text 21 217 Note that when the input to [select] matches one of its creation arguments \, then a "bang" is sent to the outlet \, NOT the original message.; #X obj 19 579 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 45 579 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 71 579 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 98 579 5 0 0 0 - - -; #X text 53 516 If you click-n-drag this number box \, you'll notice how all numbers except "23" \, "54" \, and "1" are simply sent through to the rightmost outlet.; #X text 23 416 Several creation arguments can be defined. In effect you can use [select] to test the input for many different values. You will see an outlet for each test value and finally an outlet for values which match none of them (the rightmost outlet).; #X obj 601 303 print NO_match; #X obj 474 302 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 505 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 537 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 569 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 477 92 symbol dog; #X msg 482 111 symbol cat; #X msg 490 129 symbol foo; #X msg 497 149 symbol earth; #X msg 506 168 symbol 400; #X obj 474 282 select dog cat foo 400; #X msg 502 218 400; #X obj 605 580 print NO_match; #X obj 478 579 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 509 580 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 541 580 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 573 580 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 474 377 symbol dog; #X msg 486 404 symbol cat; #X msg 494 423 symbol foo; #X msg 501 442 symbol earth; #X msg 509 463 symbol 400; #X msg 530 496 400; #X obj 478 560 select 400 dog cat foo; #X text 578 160 Notice that "400" here is defined as a symbol data type and the [select] object can successfully match it to the creation argment.; #X text 529 206 Notice that "400" here is a number and the [select] object cannot successfully match it to the creation argument. That is because this [select] expects symbols - not numbers.; #X obj 460 631 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 460 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X text 474 320 However \, in this case below \, you'll notice that the FIRST creation argument is a number. Therefore \, this [select] object expects numbers and will ignore the "symbol" data type.; #X text 513 264 FIRST CREATION ARGUMENT IS A SYMBOL; #X text 521 543 FIRST CREATION ARGUMENT IS A NUMBER; #X text 477 9 [select] can also be used to match symbols like the example in the upper-right of this patch. It important to note that the FIRST creation argument indicates to the [select] object which data type to expect. If your first creation argument is a symbol \, like "dog" \, then the object will test only symbols and numbers will be ignored! ; #X text 558 490 Notice that "400" here is a number and the [select] object can successfully match it to the creation argument.; #X text 578 457 Notice that "400" here is a symbol and the [select] object cannot successfully match it to the creation argument.; #X obj 23 373 sel 42; #X msg 23 330 42; #X obj 23 392 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 54 392 5 0 0 0 - - -; #X floatatom 31 349 5 0 0 0 - - -; #X floatatom 80 351 5 0 0 0 - - -; #X text 325 686 This document was updated for Pd version 0.35 test 24 by Dave Sabine as part of a project called pddp proposed by Krzysztof Czaja to build comprehensive documentation for Pd.; #X obj 480 639 route; #X text 479 618 RELATED OBJECTS; #X text 22 614 A WORD ABOUT CONDITIONAL OBJECTS; #N canvas 245 41 580 582 more 0; #X text 22 16 Using the [select] object \, and others listed below \, Pd users can emulate the "conditional" statements of other programming environments.; #X text 21 62 Consider the following: (Visual Basic Script); #X text 60 80 IF input = 1 THEN; #X text 59 91 response.write("Hello"); #X text 59 104 ELSEIF input = 2 THEN; #X text 59 116 response.write("GoodBye"); #X text 59 130 ELSEIF (input = 3 AND input < 10) THEN; #X text 59 153 ELSE; #X text 58 177 END IF; #X text 23 195 Now the Pd equivalent:; #X msg 37 218 1; #X msg 67 218 2; #X floatatom 123 221 5 0 0 0 - - -; #X obj 37 286 sel 1 2; #X msg 27 418 symbol Hello; #X msg 48 388 symbol GoodBye; #X symbolatom 288 428 20 0 0 0 - - -; #X obj 33 505 ==; #X obj 61 505 !=; #X obj 88 505 >; #X obj 114 505 <; #X obj 141 505 >=; #X obj 168 505 <=; #X text 28 482 OTHER CONDITIONAL/RELATIONAL OBJECTS IN Pd; #X text 58 164 response.write("No_match_for_me..."& input); #X text 59 142 response.write("This_is_cool."); #X obj 74 309 moses 3; #X msg 84 351 symbol This_is_cool.; #X obj 111 328 moses 10; #X obj 220 349 makefilename No_match_for_me...%d; #X connect 10 0 13 0; #X connect 11 0 13 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 13 1 15 0; #X connect 13 2 26 0; #X connect 14 0 16 0; #X connect 15 0 16 0; #X connect 26 1 28 0; #X connect 27 0 16 0; #X connect 28 0 27 0; #X connect 28 1 29 0; #X connect 29 0 16 0; #X restore 24 632 pd more; #N canvas 0 22 456 306 related_objects_from_other_libraries 0; #X obj 28 15 multiselect; #X text 19 53 These objects are offered in Pd only if you have downloaded and properly installed the appropriate library. These objects may or may not exist in a single library.; #X text 18 102 The best places to find information about Pd's libraries is:; #X text 15 124 www.puredata.org and click on "Downloads" then "Software" ; #X text 16 140 or; #X text 17 154 iem.kug.ac.at/pdb/; #X restore 521 639 pd related_objects_from_other_libraries; #X obj 233 397 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 196 332 symbol word; #X msg 196 351 symbol other; #X msg 313 350 symbol other; #X obj 233 377 select word; #X obj 305 397 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 305 332 symbol word; #X text 21 260 Also note that in the example above \, there is a second inlet. This is used to reset the argument's value like below. This feature is available only on [select] objects with only ONE creation argument -- in other example in this patch you'll notice that this second inlet is absent.; #X connect 0 0 8 0; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; #X connect 4 0 7 0; #X connect 5 0 14 0; #X connect 5 1 15 0; #X connect 6 0 7 0; #X connect 7 0 5 0; #X connect 8 0 17 0; #X connect 8 1 18 0; #X connect 8 2 19 0; #X connect 8 3 20 0; #X connect 28 0 33 0; #X connect 29 0 33 0; #X connect 30 0 33 0; #X connect 31 0 33 0; #X connect 32 0 33 0; #X connect 33 0 24 0; #X connect 33 1 25 0; #X connect 33 2 26 0; #X connect 33 3 27 0; #X connect 33 4 23 0; #X connect 34 0 33 0; #X connect 40 0 46 0; #X connect 41 0 46 0; #X connect 42 0 46 0; #X connect 43 0 46 0; #X connect 44 0 46 0; #X connect 45 0 46 0; #X connect 46 0 36 0; #X connect 46 1 37 0; #X connect 46 2 38 0; #X connect 46 3 39 0; #X connect 46 4 35 0; #X connect 50 0 49 0; #X connect 57 0 59 0; #X connect 57 1 60 0; #X connect 58 0 57 0; #X connect 61 0 57 0; #X connect 62 0 57 1; #X connect 70 0 73 0; #X connect 71 0 73 0; #X connect 72 0 73 1; #X connect 73 0 69 0; #X connect 73 1 74 0; #X connect 75 0 73 1;