[PD-dev] proposed new "list" object

Frank Barknecht fbar at footils.org
Wed Jul 20 11:51:49 CEST 2005


Hallo,
Georg Holzmann hat gesagt: // Georg Holzmann wrote:

> Hallo!
> 
> >     list append - append a list to another
> >     list prepend - prepend a list to another
> >     list cat - build a list by accumulating elements
> >     list serialize - spit out elements of a list one by one
> >     list first - output first n elements
> >     list last - output last n elements
> >     list length - output number of items in list
> >     list reverse - permute elements of a list back to front
> >     list pack - synonym for 'pack'
> >     list unpack - synonym for 'unpack'
> >     list selector - change selector of a list
> >     list <no args> - "prepend" the selector list to non-list messages
> 
> just some more suggestions (these objects are often the reason why I have to
> use externals in simple patches):
> 
> 1) a storage object for lists would also be useful in main-pd (like "lister"
> from zexy - maybe the easiest way would be to make a 2.inlet at the "list"
> object (to have the same behaviour as "symbol" or "float" ...) ?

I think, "list append" would be just that. However I agree that using
the plain "list" for this would feel more natural compared to the
other Pd types symbol and float. 

A further suggestion by me would be to maybe add a kind of combination
"list first" and "list last", that is: Give "first" a second outlet
wich outputs the rest of the list. 

Reading through the planned actions, it might be useful to take a look
at the max object [zl] which is also available in Cyclone. For those
who don't know it, I attached the help file. I sometimes used it, but
not too often yet to say anything about which operations would be
useful to have in a Pd "list" object as well. 

Another collection to consider would be the Lobjects externals for
Max. PDF doc here: ftp://arts.ucsc.edu/pub/ems/lobjects/LObjs_doc.pdf

However Lobjects is a really huge collection of list operations, some
of which might be better off as being implemented in externals (for
now).

Ciao
-- 
 Frank Barknecht                               _ ______footils.org__
             
          _ __latest track: "plak" @ http://footils.org/cms/show/44
-------------- next part --------------
#N canvas 31 12 939 613 10;
#X text 34 559 cyclone is (c) Miller Puckette and others;
#X text 35 572 docs based on the MAX/MSP reference (c) cycling'74;
#X text 34 586 ___________________________________________________
;
#X obj 25 21 zl;
#X obj 250 488 zl;
#X msg 159 403 mode join;
#X obj 250 510 print join;
#X msg 280 446 joined together;
#X obj 250 401 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 250 425 t b b;
#X text 143 369 in join mode lists are \, well joined:;
#X text 144 403 1;
#X text 233 402 2;
#X msg 250 468 these are;
#X text 23 49 zl supports multiple modes that perform various useful
tasks;
#X text 139 85 modes can be set as an arg or with a;
#X msg 396 80 mode mode_name [n];
#X msg 38 154 list a b;
#X msg 52 179 list c d e f;
#X obj 38 353 print group;
#X text 536 85 message.;
#X text 21 114 in group mode messages are grouped;
#X text 21 126 in numbers of elements:;
#X text 20 153 1;
#X text 20 178 2;
#X text 121 318 arg sets mode and optionally the;
#X text 122 329 number of elements to group;
#X msg 103 211 3;
#X text 86 211 3;
#X msg 137 266 list a b c d e;
#X msg 137 287 list f g;
#X text 119 265 4;
#X text 120 288 5;
#X obj 38 325 zl group 2;
#X text 209 288 <- click again;
#X text 129 234 remaining items are stored and;
#X text 129 246 used for the next group:;
#X text 130 213 change nr of elements per group;
#X obj 385 283 zl iter 3;
#X msg 385 176 1 2 3 4;
#X msg 358 154 1 2 3 4 5 6;
#X floatatom 443 258 5 0 0 0 - - -;
#X text 334 117 iter is similar to group but always;
#X msg 399 200 1;
#X text 334 129 sends out all available elements:;
#X msg 443 236 mode iter 4;
#X text 440 218 change nr here;
#X text 485 258 or here;
#X obj 385 308 print iter;
#X msg 672 439 this is a list;
#X msg 702 463 this is another list;
#X text 669 375 are common to both input lists:;
#X obj 672 415 t b b;
#X obj 672 396 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 672 491 zl sect;
#X obj 672 513 print sect;
#X text 669 365 sect outputs the elements that;
#X text 419 368 union sends out the contents of;
#X msg 452 471 this is another list;
#X obj 422 430 t b b;
#X obj 422 412 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 422 492 zl union;
#X obj 422 513 print union;
#X msg 422 450 this is a list;
#X text 420 381 both lists \, without repeating any;
#X text 420 392 of the elements in both lists:;
#N canvas 0 0 405 241 but.... 0;
#X obj 89 95 t b b;
#X obj 89 76 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 89 167 zl union;
#X obj 89 191 print union_but;
#X msg 89 119 this is a list list list;
#X msg 119 143 this is is is another list;
#X text 43 18 I'm not sure if it should be this way ...;
#X text 42 29 either is is is or one list seems logical.;
#X text 43 42 how does max do it ?;
#X connect 0 0 4 0;
#X connect 0 1 5 0;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 4 0 2 0;
#X connect 5 0 2 1;
#X restore 566 514 pd but....;
#X text 506 519 more...:;
#N canvas 196 86 643 551 trivial 0;
#X obj 66 88 zl len;
#X obj 66 111 print len;
#X msg 41 40 this produces 3;
#X msg 66 63 and this should be five;
#X text 40 18 len outputs the nr. of elements:;
#X text 301 16 rev reverses:;
#X obj 303 83 zl rev;
#X obj 303 108 print rev;
#X msg 312 59 10 9 8 7 6 5 4 3 2 1 0;
#X msg 303 36 way this something means this;
#X text 32 163 reg can be used to store lists:;
#X obj 33 284 zl reg;
#X msg 33 186 this is sent out immediately;
#X obj 33 310 print reg;
#X msg 39 246 bang;
#X msg 70 218 this is just stored;
#X obj 293 308 print rotate;
#X msg 293 219 sometimes my grammar is all messed up;
#X obj 293 285 zl rot 3;
#X text 292 199 master yoda says:;
#X msg 321 261 1 2 3 4 5 6 7 8;
#X floatatom 344 241 5 0 0 0 - - -;
#X text 281 219 1;
#X text 328 240 2;
#X text 306 262 3;
#X text 76 246 output last stored list;
#X text 290 163 rot rotates:;
#X text 34 365 nth sends out the nth element:;
#X obj 39 445 zl nth 3;
#X obj 39 469 print nth;
#X floatatom 90 418 5 0 0 0 - - -;
#X msg 39 393 1 10 11 100 101 110 111 1000;
#X text 132 419 change 'n';
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X connect 6 0 7 0;
#X connect 8 0 6 0;
#X connect 9 0 6 0;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 14 0 11 0;
#X connect 15 0 11 1;
#X connect 17 0 18 0;
#X connect 18 0 16 0;
#X connect 20 0 18 0;
#X connect 21 0 18 1;
#X connect 28 0 29 0;
#X connect 30 0 28 1;
#X connect 31 0 28 0;
#X restore 778 41 pd trivial ones;
#X text 506 44 look here for rev \, len \, reg \, rot[ate]:;
#X obj 610 261 zl slice 3;
#X msg 610 182 1 2 3 4 5 6 7;
#X obj 610 315 print slice1;
#X obj 675 288 print slice2;
#X floatatom 675 233 5 0 0 0 - - -;
#X msg 622 206 a b c d e f g i;
#X text 608 114 slice is the only mode to use the 2nd;
#X text 609 127 outlet \, it divides the list into two;
#X text 609 140 lists at the specified element nr:;
#X text 716 232 change nr;
#X text 71 21 multi purpose list processing object a.k.a. swiss army
knife;
#X text 23 60 on lists. the modes are group \, iter \, join \, len
\, reg \, rev \,;
#X msg 780 178 1 2 3 4 5 6 7;
#X floatatom 845 229 5 0 0 0 - - -;
#X msg 792 202 a b c d e f g i;
#X obj 780 257 zl ecils 3;
#X obj 780 311 print ecils1;
#X obj 845 284 print ecils2;
#X text 746 158 ecils is the reverse;
#X text 23 71 rotate \, sect \, nth \, slice \, ecils or union.;
#X connect 4 0 6 0;
#X connect 5 0 4 0;
#X connect 7 0 4 1;
#X connect 8 0 9 0;
#X connect 9 0 13 0;
#X connect 9 1 7 0;
#X connect 13 0 4 0;
#X connect 17 0 33 0;
#X connect 18 0 33 0;
#X connect 27 0 33 1;
#X connect 29 0 33 0;
#X connect 30 0 33 0;
#X connect 33 0 19 0;
#X connect 38 0 48 0;
#X connect 39 0 38 0;
#X connect 40 0 38 0;
#X connect 41 0 38 1;
#X connect 43 0 38 0;
#X connect 45 0 38 0;
#X connect 49 0 54 0;
#X connect 50 0 54 1;
#X connect 52 0 49 0;
#X connect 52 1 50 0;
#X connect 53 0 52 0;
#X connect 54 0 55 0;
#X connect 58 0 61 1;
#X connect 59 0 63 0;
#X connect 59 1 58 0;
#X connect 60 0 59 0;
#X connect 61 0 62 0;
#X connect 63 0 61 0;
#X connect 70 0 72 0;
#X connect 70 1 73 0;
#X connect 71 0 70 0;
#X connect 74 0 70 1;
#X connect 75 0 70 0;
#X connect 82 0 85 0;
#X connect 83 0 85 1;
#X connect 84 0 85 0;
#X connect 85 0 86 0;
#X connect 85 1 87 0;


More information about the Pd-dev mailing list