#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;