#N canvas 103 43 1019 657 10; #X obj 7 331 print x1; #X obj 69 331 print x2; #X obj 131 331 print x3; #X obj 194 331 print x4; #X obj 82 273 route 23 54 1; #X msg 170 239 54 43; #X msg 212 239 1 foo bar; #X obj 141 418 route big apple; #X msg 351 386 1 2 3; #X msg 248 376 big apple pie; #X msg 320 238 walk the dog; #X text 8 217 numeric arguments:; #X text 16 356 symbolic arguments:; #X msg 590 287 bang; #X msg 621 380 list; #X msg 622 413 list 5; #X msg 593 307 symbol pie; #X msg 596 327 pie; #X msg 584 248 1 2 3; #X obj 26 13 route; #X text 67 13 - route messages according to their first element; #X text 25 108 If a match is found \, and the message contains only ONE element \, then a bang is sent out the corresponding outlet. If a match if found \, and the message contains multiple elements (a list) \, then all the list elements except the first element is sent out the corresponding outlet. If no match is found \, then the entire message is sent out the right-most outlet - the "rejection" outlet. The number of outlets is the number of arguments plus one.; #X text 176 265 In this case \, the creation arguments are all numbers and [route] will therefore assume that it should attempt to match messages that are data type 'number'. All messages that are not numbers will be output through the right-most outlet.; #X msg 18 239 23 345 456; #X msg 96 239 420 34 45; #X msg 32 376 apple pie; #X msg 105 376 impeach ringo starr; #X text 34 490 In this case \, the data type 'symbol' is implied by the creation arguments and therefore this [route] object will match symbols only. Symbolic messages that do not match any of the arguments \, and all numbers \, will be output through the right-most outlet. ; #X text 565 21 If necessary \, messages of different data types can be matched by the [route] object if the data type is explictly defined in the creation arguments.; #X text 564 71 In the example below \, instead of matching the 'value' of a message \, the [route] object will match 'data type': i.e. lists will be sent through the first outlet \, floats will be sent through the second outlet \, symbols through the third outlet \, bangs through the fourth outlet. The fifth outlet will then output anything that does not match one of the previously defined data types (i.e. the "pie" message below is a text message that hasn't been defined as a 'symbol' - hence \, Pd cannot determine which data type it is and it will be output through the right-most outlet).; #X text 608 208 a float; #X text 632 247 a list (of floats); #X text 627 287 a bang; #X text 672 307 a symbol; #X text 630 328 none of the above!; #X text 702 268 a list of symbols; #X text 599 349 SPECIAL CASES OF LISTS.; #X text 18 563 RELATED OBJECTS; #X obj 22 584 select; #X obj 67 584 trigger; #X obj 119 584 moses; #X text 588 603 This document was updated for Pd version 0.35 test 26 by Dave Sabine as part of a project called pddp proposed by Krzysztof Czaja to build comprehensive documentation for Pd.; #X text 26 36 Route checks the first element of a message against each of its creation arguments \, which may be numbers or symbols (but not a mixture of the two unless the data types are defined explicitly) \, then sends the messages through the appropriate outlets.; #N canvas 0 22 466 316 related_objects_from_other_libraries 0; #X obj 26 33 segregate; #X obj 104 34 multiselect; #X text 18 86 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 135 The best places to find information about Pd's libraries is:; #X text 14 157 www.pure-data.org and click on "Downloads" then "Software" ; #X text 15 173 or; #X text 16 187 iem.kug.ac.at/pdb/; #X obj 193 34 demux; #X obj 245 34 gate; #X restore 22 607 pd related_objects_from_other_libraries; #X floatatom 625 498 5 0 0 0 - - -; #X symbolatom 673 497 10 0 0 0 - - -; #X obj 578 518 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144 -1 -1; #X msg 622 450 list not-a-list; #X msg 578 208 89; #X msg 581 228 float 7; #X obj 578 474 route bang float symbol list; #X obj 625 518 bng 15 250 50 0 empty empty float -4 23 1 12 -262144 -1 -1; #X obj 673 518 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144 -1 -1; #X obj 721 518 bng 15 250 50 0 empty empty list -2 23 1 12 -262144 -1 -1; #X obj 769 518 bng 15 250 50 0 empty empty undefined -18 23 1 12 -262144 -1 -1; #X msg 587 268 list moon earth; #X text 636 228 definitely a float!; #X text 620 366 An empty list is translated into a bang; #X text 620 399 A list with only one float is translated to a float ; #X text 620 435 A list with only one symbol is translated to a symbol ; #X obj 141 439 bng 15 250 50 0 empty empty big -4 23 1 12 -262144 -1 -1; #X obj 189 439 bng 15 250 50 0 empty empty apple -7 23 1 12 -262144 -1 -1; #X obj 237 439 bng 15 250 50 0 empty empty everything_else -2 23 1 12 -262144 -1 -1; #X obj 286 326 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144 -1 -1; #X obj 333 326 bng 15 250 50 0 empty empty float -4 23 1 12 -262144 -1 -1; #X obj 381 326 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144 -1 -1; #X obj 429 326 bng 15 250 50 0 empty empty everything_else -2 23 1 12 -262144 -1 -1; #X obj 129 469 print x1; #X obj 189 469 print x2; #X obj 249 469 print x3; #X text 526 557 [trigger]-style shortcuts don't work:; #X obj 538 577 route a b f l p s; #X text 667 576 !=; #X obj 689 577 route anything bang float list pointer symbol; #X connect 4 0 0 0; #X connect 4 1 1 0; #X connect 4 2 2 0; #X connect 4 3 3 0; #X connect 5 0 4 0; #X connect 6 0 4 0; #X connect 7 0 60 0; #X connect 7 0 67 0; #X connect 7 1 61 0; #X connect 7 1 68 0; #X connect 7 2 62 0; #X connect 7 2 69 0; #X connect 8 0 7 0; #X connect 9 0 7 0; #X connect 10 0 4 0; #X connect 13 0 50 0; #X connect 14 0 50 0; #X connect 15 0 50 0; #X connect 16 0 50 0; #X connect 17 0 50 0; #X connect 18 0 50 0; #X connect 23 0 4 0; #X connect 24 0 4 0; #X connect 25 0 7 0; #X connect 26 0 7 0; #X connect 44 0 51 0; #X connect 45 0 52 0; #X connect 47 0 50 0; #X connect 48 0 50 0; #X connect 49 0 50 0; #X connect 50 0 46 0; #X connect 50 1 44 0; #X connect 50 2 45 0; #X connect 50 3 53 0; #X connect 50 4 54 0; #X connect 55 0 50 0;