[PD] Set Operations

Frank Barknecht fbar at footils.org
Thu Dec 28 08:10:04 CET 2006


Hallo,
Alexandre Quessy hat gesagt: // Alexandre Quessy wrote:

> Very interesting.
> You can look in the list-abs library. I don't know if there is a
> list-roll_left abstraction though.

There is [list-rot], which is similar to [Lror] but rotates the other
direction, so you should use [* -1] to make it compatible with Peter's
tutorial. 

Yesterday I made a "toset" implementation, which needs some
cleaning up but it's rather easy to do. I'm just not sure if it should
be part of [list]-abs as it's rather special and "set" is an ambigous
name, which I would like to avoid in a general purpose library as
[list]-abs (or rather, I wouldn't want "set" to mean in [list]-abs
what Peter Elsea describes in "Fuzzy Logic").

[Ltop] is a bit more tricky to clone - Question: How to find the x
largest values in a [table]? -, but I also have a basically working
version. I attached my scratch-patch, in case you're interested,
including a lot of bugs, so not for the faint of heart.

Ciao
-- 
 Frank Barknecht                 _ ______footils.org_ __goto10.org__
-------------- next part --------------
#N canvas 346 35 771 808 10;
#X msg 162 107 1 0 0 0 1 0 0 1 0 0 0 0;
#X obj 162 194 show;
#X msg 162 218 4 5 6 7 1 2 3;
#X floatatom 214 130 5 0 0 0 - - -;
#X msg 163 61 1 0 1 0 1 1 0 1 0 1 0 1;
#X text 342 65 c-major scale;
#X text 344 99 c-major chord;
#X obj 263 145 t b a;
#X obj 32 329 list-len;
#X floatatom 32 352 5 0 0 0 - - -;
#X msg 32 303 1 0 0 1 1 0 0 1 0 0 0 0;
#X text 33 280 chordgen: union of the major and minor chords;
#X obj 123 482 list-mult;
#X obj 123 505 show;
#X msg 123 529 0 0 0 0 1 0 0 1 0 0 0 1;
#X floatatom 396 373 5 0 0 0 - - -;
#X msg 197 451 1 0 1 0 1 1 0 1 0 1 0 1;
#X obj 392 395 t b a;
#X obj 44 556 show;
#X msg 44 580 0 0 0 0 1 0 0 1 1 0 0 1;
#X floatatom 188 422 5 0 0 0 - - -;
#N canvas 561 402 568 577 Ltoset 0;
#X obj 336 227 table \$0-set 12;
#X obj 80 240 s \$0-set;
#X obj 58 23 inlet;
#X obj 80 100 list-drip;
#X obj 80 124 route float;
#X obj 80 148 mod 12;
#X msg 160 173 const 0;
#X obj 80 177 pack 0 1;
#X obj 58 48 t b a b;
#X obj 58 388 outlet;
#X obj 244 25 inlet;
#X msg 244 171 resize \$1;
#X obj 131 21 inlet;
#N canvas 0 0 525 386 tabdump 0;
#X obj 262 61 inlet;
#X obj 169 34 inlet;
#X obj 169 272 outlet;
#X obj 169 250 list;
#X obj 193 111 until;
#X obj 193 170 tabread \$0-set;
#X obj 193 138 f 0;
#X obj 221 138 + 1;
#X obj 232 110 0;
#X obj 169 59 t b b b b;
#X obj 194 88 12;
#X obj 193 216 list-extend;
#X text 172 315 Miller Vanilla [tabdump];
#X connect 0 0 10 1;
#X connect 1 0 9 0;
#X connect 3 0 2 0;
#X connect 4 0 6 0;
#X connect 5 0 11 0;
#X connect 6 0 7 0;
#X connect 6 0 5 0;
#X connect 7 0 6 1;
#X connect 8 0 6 1;
#X connect 9 0 3 0;
#X connect 9 1 10 0;
#X connect 9 2 8 0;
#X connect 9 3 11 1;
#X connect 10 0 4 0;
#X connect 11 0 3 1;
#X restore 58 329 pd tabdump;
#X connect 2 0 8 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 7 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X connect 8 0 13 0;
#X connect 8 1 3 0;
#X connect 8 2 6 0;
#X connect 10 0 5 1;
#X connect 10 0 11 0;
#X connect 10 0 13 1;
#X connect 11 0 1 0;
#X connect 12 0 7 1;
#X connect 13 0 9 0;
#X restore 380 531 pd Ltoset;
#X obj 389 558 show;
#X msg 389 582 1 0 1 0 0 1 0 0 0 0 0 0;
#X msg 380 508 0 2 5;
#X floatatom 438 512 5 0 0 0 - - -;
#X floatatom 367 489 5 0 0 0 - - -;
#X floatatom 421 494 5 0 0 0 - - -;
#N canvas 503 184 450 300 Lfromset 0;
#X obj 90 149 > 0;
#X obj 90 174 select 1;
#X obj 90 206 f;
#X obj 90 239 list-extend;
#X obj 90 48 inlet;
#X obj 90 88 list-drip;
#X obj 90 267 outlet;
#X obj 120 148 f 0;
#X obj 148 149 + 1;
#X obj 90 68 t a b b;
#X obj 137 127 0;
#X obj 90 109 t a b;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 6 0;
#X connect 4 0 9 0;
#X connect 5 0 11 0;
#X connect 7 0 8 0;
#X connect 7 0 2 1;
#X connect 8 0 7 1;
#X connect 9 0 5 0;
#X connect 9 1 10 0;
#X connect 9 2 3 1;
#X connect 10 0 7 1;
#X connect 11 0 0 0;
#X connect 11 1 7 0;
#X restore 380 647 pd Lfromset;
#X obj 380 670 show;
#X msg 380 694 0 2 5;
#X obj 291 348 list-minmax;
#N canvas 412 454 450 300 ltop 0;
#X obj 211 234 outlet;
#X obj 297 30 inlet;
#X obj 211 28 inlet;
#X obj 211 113 sort -1;
#X obj 211 86 zl sect;
#X obj 211 56 t a a;
#X text 77 86 filter duplicates;
#X text 88 114 sort descending;
#X text 53 174 split off x elements;
#X obj 211 172 list split \$1;
#X obj 211 199 sort;
#X text 81 199 sort ascending;
#X connect 1 0 9 1;
#X connect 2 0 5 0;
#X connect 3 0 9 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 5 1 4 1;
#X connect 9 0 10 0;
#X connect 10 0 0 0;
#X restore 417 211 pd ltop;
#X obj 421 242 show;
#X msg 422 265 3 4 5 6 8;
#X msg 410 148 1 2 3 4 5 6 7;
#X msg 434 180 7 6 5 4 3 2 1;
#X msg 539 182 1 2 3 4 5 6 8 6 5 4 3 2 1;
#X floatatom 489 221 5 0 0 0 - - -;
#N canvas 332 148 625 714 ltop 1;
#X obj 186 516 outlet;
#X obj 281 89 inlet;
#X obj 124 80 inlet;
#N canvas 0 0 450 300 find-top 0;
#X obj 211 234 outlet;
#X obj 297 30 inlet;
#X obj 211 28 inlet;
#X obj 211 113 sort -1;
#X obj 211 86 zl sect;
#X obj 211 56 t a a;
#X text 77 86 filter duplicates;
#X text 88 114 sort descending;
#X text 53 174 split off x elements;
#X obj 211 172 list split \$1;
#X obj 211 199 sort;
#X text 81 199 sort ascending;
#X floatatom 314 77 5 0 0 0 - - -;
#X connect 1 0 9 1;
#X connect 1 0 12 0;
#X connect 2 0 5 0;
#X connect 3 0 9 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 5 1 4 1;
#X connect 9 0 10 0;
#X connect 9 2 10 0;
#X connect 10 0 0 0;
#X restore 209 181 pd find-top;
#X obj 456 347 outlet;
#X obj 209 327 list-drip;
#X obj 209 212 t a a;
#N canvas 503 184 450 300 list-find 0;
#X obj 90 204 select 1;
#X obj 90 236 f;
#X obj 90 48 inlet;
#X obj 90 88 list-drip;
#X obj 90 267 outlet;
#X obj 199 166 f 0;
#X obj 227 167 + 1;
#X obj 90 68 t a b b;
#X obj 216 145 0;
#X obj 90 148 ==;
#X obj 179 49 inlet;
#X obj 136 147 > 0;
#X obj 90 178 &&;
#X obj 90 109 t a a b;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 7 0;
#X connect 3 0 13 0;
#X connect 5 0 6 0;
#X connect 5 0 1 1;
#X connect 6 0 5 1;
#X connect 7 0 3 0;
#X connect 7 1 8 0;
#X connect 8 0 5 1;
#X connect 9 0 12 0;
#X connect 10 0 9 1;
#X connect 11 0 12 1;
#X connect 12 0 0 0;
#X connect 13 0 9 0;
#X connect 13 1 11 0;
#X connect 13 2 5 0;
#X restore 209 443 pd list-find;
#X obj 209 356 t b a;
#X obj 209 399 list;
#X obj 186 490 list;
#X obj 209 468 list-extend;
#X obj 124 108 t a a b;
#X connect 1 0 3 1;
#X connect 2 0 12 0;
#X connect 3 0 6 0;
#X connect 5 0 8 0;
#X connect 5 1 10 0;
#X connect 6 0 5 0;
#X connect 6 1 4 0;
#X connect 7 0 11 0;
#X connect 8 0 9 0;
#X connect 8 1 7 1;
#X connect 9 0 7 0;
#X connect 10 0 0 0;
#X connect 11 0 10 1;
#X connect 12 0 3 0;
#X connect 12 1 9 1;
#X connect 12 2 11 1;
#X restore 510 663 pd ltop;
#X obj 510 728 show;
#X msg 510 751 5 8 6 7;
#X floatatom 554 634 5 0 0 0 - - -;
#X obj 554 691 show;
#X msg 554 714 6 6.5 8;
#X msg 547 541 1 2 3 4 5 6 8 8 6.5 5 4 3 2 1;
#X text 53 11 see: http://arts.ucsc.edu/EMS/Music/research/FuzzyLogicTutor/FuzzyTut.html
;
#X obj 572 385 list;
#X obj 580 317 t b a;
#X obj 631 358 list length;
#X obj 572 469 prepent set;
#X msg 572 491 5 6 8 1 2 3 4;
#X msg 623 319 1 2 3 4 5 6 8;
#X floatatom 580 272 5 0 0 0 - - -;
#X floatatom 664 397 5 0 0 0 - - -;
#X obj 572 433 list prepend;
#X obj 580 292 * -1;
#X obj 619 385 mod;
#X obj 572 409 list split;
#X msg 258 177 1 2 3 4 5 6 7;
#X obj 162 157 list-rot;
#X obj 117 451 list-rot -4;
#X connect 0 0 60 0;
#X connect 1 0 2 0;
#X connect 3 0 7 0;
#X connect 4 0 60 0;
#X connect 7 0 59 0;
#X connect 7 1 60 1;
#X connect 8 0 9 0;
#X connect 10 0 8 0;
#X connect 10 0 61 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 15 0 17 0;
#X connect 16 0 12 1;
#X connect 17 0 16 0;
#X connect 18 0 19 0;
#X connect 20 0 61 1;
#X connect 21 0 22 0;
#X connect 21 0 28 0;
#X connect 21 0 39 0;
#X connect 22 0 23 0;
#X connect 24 0 21 0;
#X connect 25 0 21 2;
#X connect 26 0 21 0;
#X connect 27 0 21 1;
#X connect 28 0 29 0;
#X connect 29 0 30 0;
#X connect 32 0 33 0;
#X connect 33 0 34 0;
#X connect 35 0 32 0;
#X connect 36 0 32 0;
#X connect 37 0 32 0;
#X connect 38 0 32 1;
#X connect 39 0 40 0;
#X connect 39 1 43 0;
#X connect 40 0 41 0;
#X connect 42 0 39 1;
#X connect 43 0 44 0;
#X connect 45 0 39 0;
#X connect 47 0 58 0;
#X connect 48 0 47 0;
#X connect 48 1 57 0;
#X connect 49 0 57 1;
#X connect 50 0 51 0;
#X connect 52 0 49 0;
#X connect 52 0 47 1;
#X connect 53 0 56 0;
#X connect 55 0 50 0;
#X connect 56 0 48 0;
#X connect 57 0 54 0;
#X connect 57 0 58 1;
#X connect 58 0 55 0;
#X connect 58 1 55 1;
#X connect 59 0 60 0;
#X connect 60 0 1 0;
#X connect 61 0 12 0;
#X connect 61 0 18 0;


More information about the Pd-list mailing list