#N canvas 13 -7 937 656 10; #X obj 25 11 pack; #X text 60 11 - combine several atoms into one message; #X msg 24 190 bang; #X obj 24 210 pack 100 0 s 42; #X text 24 249 In the same example \, this [pack] object will recognize floats in the first \, second \, and fourth inlet \; it will recognize symbols in the third inlet. If it receives anything else \, then you'll see the "no method for ___" error message in the terminal window.; #X obj 25 366 pack 100 0 s 42; #X msg 25 328 400 1 cat 38; #X text 110 328 This works.; #X msg 37 347 cat dog 42 earth; #X obj 30 534 pack cat; #X text 24 419 So \, if [pack] understands that "100" is a float and can therefore understand all incoming numbers to that inlet...then you might assume that the word "cat" could be written as a creation argument and [pack] should understand all incoming symbols. But that's NOT the case. If you try to define a [pack] symbol with the word "cat" in a creation argument \, you'll get a "bad type" error.; #X text 38 516 WRONG; #X obj 142 538 pack symbol; #X text 222 528 CORRECT; #X obj 142 559 print this_package; #X msg 142 517 cat; #X text 40 382 Note that the "s" above is an abbreviation for "symbol". ; #X obj 30 611 pack bang; #X text 29 578 Same problem with bangs! This [pack] object creates an error.; #X obj 416 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 416 604 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X text 448 106 [pack] can be created with any number of creation arguments. There will be one inlet created for each argument and the values of each [pack]ed element can be updated at any time using the separate inlets \; or they can be updated simoultaneously with a LIST of messages to its first inlet.; #X text 609 75 is the same as; #X obj 24 231 print package_1; #X obj 25 399 print package_2; #X obj 444 489 print my_package; #X msg 467 271 1 2 dog; #X text 518 266 This list doesn't contain enough elements \; so it resets only the first three elements and then outputs the entire package - the undefined elements will simply output their previous values. ; #X obj 444 197 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 476 376 5 0 0; #X floatatom 474 329 5 0 0; #X msg 537 423 100 earth me 42; #X text 548 441 Lists can only be sent to the first inlet -- this list will cause an error.; #X text 520 326 A new value for the first element will reset the first element and force [pack] to output the entire package of stored values. ; #X text 451 16 Perhaps the best way to build creation arguments is to define the data types that [pack] should expect at each inlet: (i.e. floats \, symbols \, or pointers -- or their abbreviations f \, s \, or p); #X obj 450 75 pack float symbol pointer; #X obj 704 76 pack f s p; #X msg 457 247 42 24 dog cat 1 2; #X obj 444 469 pack f f s s f f; #X text 572 247 This list contains new values for each element.; #X text 19 127 In the example below \, the creation arguments are "100 \, 0 \, a symbol \, 42". Hence \, when [pack] receives a bang \, it will send that information to its outlet as a list - or 'package' - which will be printed in your terminal window.; #X text 144 348 This doesn't work - the data types; #X text 143 362 don't correspond with the arguments.; #X text 17 33 The pack object takes a series of inputs and then outputs a concatenated list. The number of creation arguments determines the number of inlets while the type of creation arguments determines the types of messages that [pack] should expect to receive at each inlet - although with some peculiarities described below.; #X text 463 191 Any message to the first inlet will force [pack] to output its package - its list of values. A bang to the first inlet will force [pack] to output the current values without resetting any of them.; #X text 522 366 This number box will update each of the 'float' values and will NOT output the package - because the first inlet is not receiving a message - to change this behavior \, you should explore the [trigger] object.; #X text 443 523 RELATED OBJECTS; #X obj 442 546 trigger; #X obj 495 546 unpack; #N canvas 0 0 452 302 related_objects_from_other_libraries 0; #X obj 21 16 pack~; #X obj 61 16 unpack~; #X obj 113 16 tabdump; #X obj 169 16 niagara; #X obj 224 16 packel; #X obj 21 42 repack; #X obj 70 42 drip; #X obj 107 42 sort; #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.puredata.org and click on "Downloads" then "Software" ; #X text 15 173 or; #X text 16 187 iem.kug.ac.at/pdb/; #X restore 440 571 pd related_objects_from_other_libraries; #X text 443 601 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 connect 2 0 3 0; #X connect 3 0 23 0; #X connect 5 0 24 0; #X connect 6 0 5 0; #X connect 8 0 5 0; #X connect 12 0 14 0; #X connect 15 0 12 0; #X connect 19 0 20 0; #X connect 26 0 38 0; #X connect 28 0 38 0; #X connect 29 0 38 1; #X connect 29 0 38 4; #X connect 29 0 38 5; #X connect 30 0 38 0; #X connect 31 0 38 1; #X connect 37 0 38 0; #X connect 38 0 25 0;