#N canvas 0 0 555 619 10; #X obj 0 595 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0 14 -228856 -66577 0; #X obj 0 0 cnv 15 552 40 empty \$0-pddp.cnv.header select 3 12 0 18 -204280 -1 0; #X obj 0 163 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 8 12 0 13 -228856 -1 0; #N canvas 52 171 494 420 META 0; #X text 12 165 LIBRARY internal; #X text 12 205 WEBSITE http://crca.ucsd.edu/~msp/; #X text 12 45 LICENSE SIBSD; #X text 12 185 AUTHOR Miller Puckette; #X text 12 245 HELP_PATCH_AUTHORS This help patch 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. Jonathan Wilkes revised the patch to conform to the PDDP template for Pd version 0.42.; #X text 12 65 DESCRIPTION compare numbers or symbols; #X text 12 5 ALIAS sel; #X text 12 85 INLET_0 float symbol list; #X text 12 105 INLET_1 float symbol; #X text 12 125 OUTLET_N bang; #X text 12 145 OUTLET_R float symbol; #X text 12 25 KEYWORDS control symbol_op; #X text 12 225 RELEASE_DATE 1997; #X restore 500 597 pd META; #X obj 0 359 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 8 12 0 13 -228856 -1 0; #X obj 0 458 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8 12 0 13 -228856 -1 0; #X obj 0 540 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 8 12 0 13 -228856 -1 0; #N canvas 100 340 428 250 Related_objects 0; #X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0 14 -204280 -1 0; #X text 8 2 [select] Related Objects; #X obj 22 43 route; #X obj 62 43 spigot; #X obj 107 43 symbol; #X obj 155 43 float; #X text 18 123 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 17 165 The best places to find information about Pd's libraries is:; #X text 18 185 www.puredata.org and click on "Downloads" then "Software" ; #X text 18 200 or; #X text 18 215 iem.kug.ac.at/pdb/; #X text 19 83 Externals; #X obj 19 103 pddp/helplink markex/multiselect; #X restore 102 597 pd Related_objects; #X obj 78 172 cnv 17 3 115 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856 -162280 0; #X text 98 171 float; #X text 98 210 list; #X obj 78 368 cnv 17 3 40 empty \$0-pddp.cnv.let.n n 5 9 0 16 -228856 -162280 0; #X obj 78 306 cnv 17 3 45 empty \$0-pddp.cnv.let.1 1 5 9 0 16 -228856 -162280 0; #X text 98 305 float; #X obj 446 3 select; #X text 493 3 or; #X obj 518 3 sel; #X obj 448 20 pddp/pddplink http://wiki.puredata.info/en/select -text pdpedia: select; #X msg 62 50 6; #X obj 29 99 select 6; #X msg 29 49 234; #X floatatom 29 76 0 0 0 0 - - -; #X obj 29 127 print match; #X obj 108 127 print NO_match; #X text 202 115 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 text 11 23 compare numbers or symbols; #N canvas 57 54 428 548 A_Word_About_Conditional_Objects 0; #X text 20 38 Using the [select] object \, and others listed below \, Pd users can emulate the "conditional" statements of other programming environments.; #X text 20 79 Consider the following: (Visual Basic Script); #X text 59 97 IF input = 1 THEN; #X text 58 108 response.write("Hello"); #X text 58 121 ELSEIF input = 2 THEN; #X text 58 133 response.write("GoodBye"); #X text 58 170 ELSE; #X text 57 194 END IF; #X text 22 217 Now the Pd equivalent:; #X msg 60 242 1; #X msg 92 242 2; #X floatatom 138 242 5 0 0 0 - - -; #X obj 60 280 sel 1 2; #X msg 60 426 symbol Hello; #X msg 79 399 symbol GoodBye; #X symbolatom 181 452 21 0 0 0 - - -; #X obj 27 517 ==; #X obj 55 517 !=; #X obj 82 517 >; #X obj 108 517 <; #X obj 135 517 >=; #X obj 162 517 <=; #X text 22 494 OTHER CONDITIONAL/RELATIONAL OBJECTS IN Pd; #X text 57 181 response.write("No_match_for_me..."& input); #X text 58 159 response.write("This_is_cool."); #X obj 99 303 moses 3; #X msg 136 371 symbol This_is_cool.; #X obj 136 322 moses 10; #X obj 181 344 makefilename No_match_for_me...%d; #X text 58 147 ELSEIF (input < 3 AND input < 10) THEN; #X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0 14 -204280 -1 0; #X text 8 2 [select] Conditional Statements in Pd; #X connect 9 0 12 0; #X connect 10 0 12 0; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 12 1 14 0; #X connect 12 2 25 0; #X connect 13 0 15 0; #X connect 14 0 15 0; #X connect 25 1 27 0; #X connect 26 0 15 0; #X connect 27 0 26 0; #X connect 27 1 28 0; #X connect 28 0 15 0; #X restore 102 549 pd A_Word_About_Conditional_Objects; #N canvas 79 52 428 289 second_inlet 0; #X obj 23 154 sel 42; #X msg 23 108 42; #X obj 23 176 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 56 176 5 0 0 0 - - -; #X floatatom 31 130 5 0 0 0 - - -; #X floatatom 80 132 5 0 0 0 - - -; #X obj 197 195 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 183 110 symbol word; #X msg 197 132 symbol other; #X msg 295 134 symbol other; #X obj 197 170 select word; #X obj 260 195 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 292 110 symbol word; #X text 20 38 The right inlet is used to reset the argument's value as in the patch below. This feature is available only on [select] objects with only ONE creation argument (or no creation arguments). In the other examples with multiple creation arguments \, you'll notice that this second inlet is absent.; #X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0 14 -204280 -1 0; #X text 8 2 [select] The Second Inlet; #X text 20 226 Note: A given [select] object will match floats or symbols \, but not both. See the subpatch titled "matching_symbols" for more details.; #X connect 0 0 2 0; #X connect 0 1 3 0; #X connect 1 0 0 0; #X connect 4 0 0 0; #X connect 5 0 0 1; #X connect 7 0 10 0; #X connect 8 0 10 0; #X connect 9 0 10 1; #X connect 10 0 6 0; #X connect 10 1 11 0; #X connect 12 0 10 1; #X restore 171 335 pd second_inlet; #N canvas 52 20 491 603 matching_symbols 0; #X obj 151 304 print NO_match; #X obj 22 304 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 54 304 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 86 304 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 118 304 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 22 102 symbol dog; #X msg 30 124 symbol cat; #X msg 38 146 symbol foo; #X msg 45 168 symbol earth; #X msg 54 190 symbol 400; #X obj 22 282 select dog cat foo 400; #X msg 50 233 400; #X obj 152 571 print NO_match; #X obj 23 571 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 55 571 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 87 571 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 119 571 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 23 385 symbol dog; #X msg 31 407 symbol cat; #X msg 39 429 symbol foo; #X msg 46 451 symbol earth; #X msg 54 473 symbol 400; #X msg 75 506 400; #X obj 23 549 select 400 dog cat foo; #X text 126 182 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 77 221 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 text 61 264 FIRST CREATION ARGUMENT IS A SYMBOL; #X text 66 532 FIRST CREATION ARGUMENT IS A NUMBER; #X text 103 500 Notice that "400" here is a number and the [select] object can successfully match it to the creation argument.; #X text 123 467 Notice that "400" here is a symbol and the [select] object cannot successfully match it to the creation argument.; #X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0 14 -204280 -1 0; #X text 8 2 [select] Matching Symbols; #X text 19 329 However \, in the 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 19 38 [select] can be used to match symbols. 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 connect 5 0 10 0; #X connect 6 0 10 0; #X connect 7 0 10 0; #X connect 8 0 10 0; #X connect 9 0 10 0; #X connect 10 0 1 0; #X connect 10 1 2 0; #X connect 10 2 3 0; #X connect 10 3 4 0; #X connect 10 4 0 0; #X connect 11 0 10 0; #X connect 17 0 23 0; #X connect 18 0 23 0; #X connect 19 0 23 0; #X connect 20 0 23 0; #X connect 21 0 23 0; #X connect 22 0 23 0; #X connect 23 0 13 0; #X connect 23 1 14 0; #X connect 23 2 15 0; #X connect 23 3 16 0; #X connect 23 4 12 0; #X restore 102 571 pd matching_symbols; #X text 98 265 symbol; #X text 98 319 symbol; #X text 98 367 bang; #X text 168 367 - for each creation argument \, a corresponding outlet is created. When the value at the left inlet matches a creation argument \, a bang is sent to the corresponding outlet.; #X text 168 171 - if an incoming float matches a creation argument \, a bang is sent to the corresponding outlet. If it does not match \, the float is sent to the rightmost outlet.; #X obj 78 421 cnv 17 3 30 empty \$0-pddp.cnv.let.r r 5 9 0 16 -228856 -162280 0; #X text 98 420 float; #X text 98 435 symbol; #X text 168 420 - if there is no match \, the float or symbol is sent to the rightmost outlet.; #X text 168 476 - [select] creates an outlet for each creation argument (plus one outlet at the right). Floats and symbols may not be mixed. See the subpatch below for more details:; #N canvas 105 267 428 240 creation_arguments 0; #X floatatom 23 152 0 0 0 0 - - -; #X msg 87 110 1; #X msg 53 110 54; #X msg 23 110 23; #X obj 23 182 select 23 54 1; #X obj 23 209 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 50 209 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 77 209 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 104 209 5 0 0 0 - - -; #X text 61 139 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 20 38 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 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0 14 -204280 -1 0; #X text 8 2 [select] Creation Arguments; #X connect 0 0 4 0; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; #X connect 4 0 5 0; #X connect 4 1 6 0; #X connect 4 2 7 0; #X connect 4 3 8 0; #X restore 171 517 pd creation_arguments; #X text 97 47 In its simplest form shown here \, [select] checks its input against 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 text 168 262 - if an incoming symbol matches a creation argument \, a bang is sent to the corresponding outlet. If it does not match \, the symbol is sent to the rightmost outlet.; #X text 168 210 - if there is only one creation argument (or none) \, the first and second element of the list will be distributed to the two inlets of [select]. If there is more than one creation argument the list will be truncated.; #X text 167 305 - the right inlet is available if there is only one creation argument. See the subpatch below for details:; #X text 80 476 n) float; #X text 98 491 symbol atom; #X obj 4 597 pddp/pddplink all_about_help_patches.pd -text Usage Guide; #X obj 296 572 pddp/pddplink ../2.control.examples/18.conditional.pd -text doc/2.control.examples/18.conditional.pd; #X connect 18 0 21 0; #X connect 19 0 22 0; #X connect 19 1 23 0; #X connect 20 0 21 0; #X connect 21 0 19 0;