musical, yet underwhelming.

This commit is contained in:
Nico 2021-08-28 21:56:31 +01:00
parent 75ccfcf91a
commit 54bab5afdd
2 changed files with 482 additions and 252 deletions

722
life.pd
View File

@ -1,139 +1,57 @@
#N canvas 434 59 1272 948 12;
#X obj 97 94 grid;
#X obj 97 119 route 1;
#X msg 21 74 connect;
#N canvas 244 135 1412 831 12;
#X obj 94 77 grid;
#X obj 94 102 route 1;
#X msg 18 57 connect;
#N canvas 2 570 450 250 (subpatch) 0;
#X array life0 128 float 2;
#X coords 0 1 128 -1 200 140 1;
#X restore 582 107 graph;
#X obj 97 144 unpack f f;
#X obj 97 187 +;
#X obj 164 167 * 16;
#X obj 120 239 tabread life0;
#X obj 120 299 tabwrite life0;
#X obj 120 264 == 0;
#X obj 97 62 r grid;
#X obj 97 212 t b f f;
#X obj 97 322 s draw;
#X obj 216 13 r draw;
#X obj 276 141 bng 15 250 50 0 empty empty reset 17 7 0 10 -262144
-1 -1;
#X msg 275 160 \; life0 const 0;
#X obj 216 69 s grid;
#X restore 579 90 graph;
#X obj 94 127 unpack f f;
#X obj 94 170 +;
#X obj 161 150 * 16;
#X obj 94 45 r grid;
#X obj 481 269 s grid;
#N canvas 0 50 450 250 (subpatch) 0;
#X array life1 128 float 2;
#X coords 0 1 128 -1 200 140 1;
#X restore 784 107 graph;
#N canvas 1180 376 692 562 draw-old 0;
#X obj 44 92 until;
#X obj 44 60 t f f;
#X msg 88 92 0;
#X obj 44 129 f;
#X obj 44 155 + 1;
#X obj 44 180 - 1;
#X msg 44 35 127;
#X obj 115 252 tabread life0;
#X obj 44 204 t f f f;
#X obj 67 252 mod 16;
#X obj 18 252 div 16;
#X obj 34 315 pack f f f;
#X msg 34 340 set \$2 \$1 \$3;
#X obj 44 9 inlet;
#X obj 34 365 outlet;
#X text 88 8 TODO optimise. Could use grid/map to reduce from 128 osc
messages to 4;
#X connect 0 0 3 0;
#X connect 1 0 0 0;
#X connect 1 1 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 3 1;
#X connect 4 0 5 0;
#X connect 5 0 8 0;
#X connect 6 0 1 0;
#X connect 7 0 11 2;
#X connect 8 0 10 0;
#X connect 8 1 9 0;
#X connect 8 2 7 0;
#X connect 9 0 11 1;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 12 0 14 0;
#X connect 13 0 6 0;
#X restore 830 53 pd draw-old;
#N canvas 1180 376 692 562 draw-old 0;
#X obj 44 92 until;
#X obj 44 60 t f f;
#X msg 88 92 0;
#X obj 44 129 f;
#X obj 44 155 + 1;
#X obj 44 180 - 1;
#X msg 44 35 127;
#X obj 115 252 tabread life0;
#X obj 44 204 t f f f;
#X obj 67 252 mod 16;
#X obj 18 252 div 16;
#X obj 34 315 pack f f f;
#X msg 34 340 set \$2 \$1 \$3;
#X obj 44 9 inlet;
#X obj 34 365 outlet;
#X text 88 8 TODO optimise. Could use grid/map to reduce from 128 osc
messages to 4;
#X connect 0 0 3 0;
#X connect 1 0 0 0;
#X connect 1 1 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 3 1;
#X connect 4 0 5 0;
#X connect 5 0 8 0;
#X connect 6 0 1 0;
#X connect 7 0 11 2;
#X connect 8 0 10 0;
#X connect 8 1 9 0;
#X connect 8 2 7 0;
#X connect 9 0 11 1;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 12 0 14 0;
#X connect 13 0 6 0;
#X restore 216 40 pd draw-old;
#X text 307 11 this could all be optimised \, but I went for a "simple"
#X restore 781 90 graph;
#X text 370 7 this could all be optimised \, but I went for a "simple"
solution \, and I'm bad at patching. TODO optimise drawing \, implement
sample triggers;
#N canvas 301 417 965 550 life-frame 0;
#N canvas 413 342 714 757 neighbors 0;
#X obj 152 41 inlet;
#X obj 152 176 until;
#X obj 152 201 f;
#X obj 152 231 + 1;
#X obj 205 327 t f f;
#X obj 165 364 mod 3;
#X obj 237 394 div 3;
#X obj 165 414 +;
#X msg 196 176 0;
#X obj 152 149 t f b;
#X obj 205 296 - 1;
#X obj 165 389 * 16;
#X obj 201 465 - 17;
#X obj 165 485 +;
#X obj 165 511 mod 128;
#X text 240 458 has the effect of moving up a row and left a cell to
#N canvas 245 185 798 675 life-frame 0;
#N canvas 1293 59 508 798 neighbors 0;
#X obj 11 30 inlet;
#X obj 11 165 until;
#X obj 11 190 f;
#X obj 11 220 + 1;
#X obj 64 316 t f f;
#X obj 24 353 mod 3;
#X obj 96 383 div 3;
#X obj 24 403 +;
#X msg 55 165 0;
#X obj 11 138 t f b;
#X obj 64 285 - 1;
#X obj 24 378 * 16;
#X obj 60 454 - 17;
#X obj 24 474 +;
#X obj 24 500 mod 128;
#X text 99 447 has the effect of moving up a row and left a cell to
start neighbor search (which should be correct);
#X obj 201 420 r \$0-cell;
#X obj 198 110 s \$0-cell;
#X msg 152 121 8;
#X obj 165 536 tabread life0;
#X obj 165 561 +;
#X obj 165 586 t f f;
#X obj 147 614 f;
#X obj 147 639 t f b;
#X msg 192 639 0;
#X obj 152 70 t b f, f 7;
#X text 197 562 accumulator by IOhannes on #dataflow;
#X obj 152 256 t f f, f 8;
#X obj 149 281 sel 9;
#X obj 147 664 outlet;
#X obj 60 409 r \$0-cell;
#X obj 57 99 s \$0-cell;
#X msg 11 110 8;
#X obj 24 525 tabread life0;
#X obj 24 550 +;
#X obj 24 575 t f f;
#X obj 6 603 f;
#X obj 6 628 t f b;
#X msg 51 628 0;
#X obj 11 59 t b f, f 7;
#X text 56 551 accumulator by IOhannes on #dataflow;
#X obj 11 245 t f f, f 8;
#X obj 8 270 sel 9;
#X obj 6 653 outlet;
#X text 36 4 Game of life neighborhood count;
#X connect 0 0 25 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
@ -167,7 +85,7 @@ start neighbor search (which should be correct);
#X connect 27 0 28 0;
#X connect 27 1 10 0;
#X connect 28 0 22 0;
#X restore 333 229 pd neighbors;
#X restore 471 233 pd neighbors;
#X msg 302 39 128;
#X obj 301 94 until;
#X obj 301 119 f;
@ -175,22 +93,35 @@ start neighbor search (which should be correct);
#X obj 302 64 t f b;
#X msg 353 98 0;
#X obj 301 169 - 1;
#X obj 333 254 sel 4 3, f 9;
#X msg 393 285 0;
#X msg 363 285 1;
#X obj 357 379 tabwrite life1;
#X obj 233 286 spigot;
#X obj 265 338 tabread life0;
#X obj 301 194 t f f f f, f 22;
#X obj 471 258 sel 4 3, f 9;
#X msg 531 289 0;
#X msg 501 289 1;
#X obj 475 381 tabwrite life1;
#X obj 386 278 spigot;
#X obj 418 330 tabread life0;
#X obj 25 214 sel 127;
#X obj 57 265 array get life1 0 128;
#X obj 25 239 t b b;
#X obj 57 290 array set life0 0 128;
#X obj 25 319 s draw;
#X obj 233 311 t b f;
#X msg 314 280 1;
#X msg 233 340 0;
#X obj 386 303 t b f;
#X msg 452 284 1;
#X msg 386 330 0;
#X obj 302 9 inlet;
#X obj 25 314 v page;
#X obj 25 339 sel 0;
#X obj 25 364 s draw-life;
#X obj 301 193 t f f f f f, f 37;
#X obj 207 337 tabread triggers;
#X obj 207 362 t f f, f 6;
#X obj 246 389 != 0;
#X obj 207 420 spigot;
#X obj 268 236 t f f;
#X obj 289 278 tabread life1;
#X text 344 6 game of life - run a generation \, outlet sends the numbers
of triggers that cells are on this generation;
#X obj 289 303 == 1;
#X obj 207 445 spigot;
#X obj 207 470 outlet;
#X connect 0 0 8 0;
#X connect 1 0 5 0;
#X connect 2 0 3 0;
@ -200,131 +131,418 @@ start neighbor search (which should be correct);
#X connect 5 0 2 0;
#X connect 5 1 6 0;
#X connect 6 0 3 1;
#X connect 7 0 14 0;
#X connect 8 0 21 0;
#X connect 7 0 25 0;
#X connect 8 0 19 0;
#X connect 8 1 10 0;
#X connect 8 2 9 0;
#X connect 9 0 11 0;
#X connect 10 0 11 0;
#X connect 12 0 20 0;
#X connect 12 0 18 0;
#X connect 13 0 11 0;
#X connect 14 0 15 0;
#X connect 14 1 12 0;
#X connect 14 2 0 0;
#X connect 14 3 11 1;
#X connect 14 0 16 0;
#X connect 15 0 17 0;
#X connect 16 0 18 0;
#X connect 16 0 22 0;
#X connect 16 1 15 0;
#X connect 18 0 20 0;
#X connect 18 1 13 0;
#X connect 19 0 12 1;
#X connect 20 0 12 1;
#X connect 21 0 1 0;
#X connect 22 0 23 0;
#X connect 23 0 24 0;
#X connect 25 0 14 0;
#X connect 25 1 30 0;
#X connect 25 2 12 0;
#X connect 25 3 0 0;
#X connect 25 4 11 1;
#X connect 26 0 27 0;
#X connect 27 0 29 0;
#X connect 27 1 28 0;
#X connect 28 0 29 1;
#X connect 29 0 34 0;
#X connect 30 0 26 0;
#X connect 30 1 31 0;
#X connect 31 0 33 0;
#X connect 33 0 34 1;
#X connect 34 0 35 0;
#X restore 333 467 pd life-frame;
#X text 39 22 grid I/O;
#X obj 333 429 metro 200;
#X obj 333 401 r playing;
#X obj 393 129 t b b, f 13;
#X text 371 80 drawing;
#X obj 393 154 v playing;
#X text 325 379 run life;
#X obj 393 179 * 8;
#X msg 389 208 lset 15 7 \$1;
#X obj 274 330 vsl 15 128 50 400 0 0 empty empty speed 0 -9 0 10 -261682
-1 -1 0 1;
#X obj 717 463 loadbang;
#X msg 784 514 \; life0 const 0 \; triggers const 0;
#X obj 717 488 t b b, f 10;
#X obj 717 538 s page;
#X obj 808 473 bng 15 250 50 0 empty empty reset 17 7 0 10 -262144
-1 -1;
#X obj 94 221 v page;
#X text 704 439 on init \, reset all \, and we're on the life page
(page 0);
#X msg 717 513 0;
#X floatatom 274 466 5 0 0 0 - - -;
#X text 157 9 pages: 0 - life \, 1 - triggers;
#X obj 94 246 pack f f;
#X obj 94 195 t b f, f 8;
#X text 156 246 packs to page \, index;
#N canvas 331 178 651 566 life-page 0;
#X obj 370 95 tabread life0;
#X obj 370 155 tabwrite life0;
#X obj 370 120 == 0;
#X obj 347 68 t b f f;
#X obj 46 92 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
;
#X obj 46 112 s playing;
#X obj 14 59 t b b;
#X obj 14 9 inlet;
#X obj 347 178 s draw-life;
#X obj 14 134 s draw-life;
#X obj 14 34 route 127 126, f 48;
#X text 90 17 bottom row keys;
#X msg 203 144 1;
#X obj 203 169 s page;
#X msg 240 94 all 0;
#X obj 240 119 s grid;
#X text 140 187 switch to triggers page;
#N canvas 506 332 718 499 plot-triggers 0;
#X obj 38 37 inlet;
#X obj 38 240 tabread triggers;
#X obj 197 284 mod 16;
#X obj 148 284 div 16;
#X obj 38 400 pack f f f;
#X obj 38 450 s grid;
#X msg 38 425 lset \$3 \$2 \$1;
#X text 94 32 plot all the triggers on the grid.;
#X msg 38 62 128;
#X obj 38 87 t f b;
#X obj 38 112 until;
#X obj 38 137 f;
#X obj 38 162 + 1;
#X msg 80 113 0;
#X obj 38 187 - 1;
#X obj 38 212 t f f, f 18;
#X obj 161 240 t f f;
#X obj 38 265 t f f, f 6;
#X obj 77 295 != 0;
#X obj 38 320 spigot;
#X obj 38 345 * 2;
#X obj 38 370 - 1;
#X connect 0 0 8 0;
#X connect 1 0 17 0;
#X connect 2 0 4 2;
#X connect 3 0 4 1;
#X connect 4 0 6 0;
#X connect 6 0 5 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 9 1 13 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 12 0 11 1;
#X connect 12 0 14 0;
#X connect 13 0 11 1;
#X connect 14 0 15 0;
#X connect 15 0 1 0;
#X connect 15 1 16 0;
#X connect 16 0 3 0;
#X connect 16 1 2 0;
#X connect 17 0 19 0;
#X connect 17 1 16 0;
#X connect 20 0 22 0;
#X connect 20 1 13 0;
#X connect 21 0 12 1;
#X connect 22 0 12 1;
#X connect 23 0 1 0;
#X restore 275 227 pd life-frame;
#X obj 275 203 bng 15 250 50 0 empty empty tick 17 7 0 10 -262144 -1
-1;
#X obj 297 416 t f b;
#X obj 297 441 until;
#X obj 297 466 f;
#X obj 297 491 + 1;
#X obj 297 516 - 1;
#X msg 340 442 0;
#X msg 297 391 8;
#X obj 249 562 sel 7;
#X obj 297 541 t f f f, f 14;
#X obj 295 594 tabread life0;
#X obj 374 625 <<;
#X text 32 34 grid I/O;
#X obj 374 650 +;
#X obj 374 675 t f f;
#X obj 356 703 f;
#X obj 356 728 t f b;
#X msg 401 728 0;
#X text 406 651 accumulator by IOhannes on #dataflow;
#X obj 298 265 r draw;
#X msg 297 290 8;
#X obj 297 315 t f b;
#X obj 297 340 until;
#X msg 340 340 0;
#X obj 297 365 t b b, f 26;
#X obj 476 394 f;
#X obj 476 419 + 1;
#X obj 476 444 - 1;
#X obj 476 469 * 16;
#X obj 344 566 +;
#X obj 356 778 list;
#X obj 356 753 list prepend;
#X obj 356 803 spigot;
#X obj 469 591 == 7;
#X obj 356 828 t b a;
#X msg 319 829 0;
#X obj 389 875 list trim;
#X obj 389 850 list prepend map 0;
#X obj 389 900 s grid;
#X text 344 265 PROTOTYPING faster drawing. This is spaghetti \, but
basically we read out of the array and convert into a bitmap to send
to the grid in one osc message.;
#X connect 17 1 18 0;
#X connect 18 0 19 1;
#X connect 19 0 20 0;
#X connect 20 0 21 0;
#X connect 21 0 4 0;
#X restore 77 89 pd plot-triggers;
#X obj 180 63 t b b b b;
#X obj 220 233 s grid;
#X msg 220 208 set 14 7 1;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 3 0 8 0;
#X connect 3 1 0 0;
#X connect 3 2 1 1;
#X connect 4 0 5 0;
#X connect 6 0 9 0;
#X connect 6 1 4 0;
#X connect 7 0 10 0;
#X connect 10 0 6 0;
#X connect 10 1 18 0;
#X connect 10 2 3 0;
#X connect 12 0 13 0;
#X connect 14 0 15 0;
#X connect 18 0 17 0;
#X connect 18 1 12 0;
#X connect 18 2 20 0;
#X connect 18 3 14 0;
#X connect 20 0 19 0;
#X restore 94 324 pd life-page;
#X obj 393 104 r draw-life;
#N canvas 1011 59 881 1026 plot-life 0;
#X obj 21 356 t f b;
#X obj 21 381 until;
#X obj 21 406 f;
#X obj 21 431 + 1;
#X obj 21 456 - 1;
#X msg 64 382 0;
#X msg 21 331 8;
#X obj 21 562 sel 7;
#X obj 21 481 t f f f, f 14;
#X obj 147 628 tabread life0;
#X obj 147 680 <<;
#X obj 147 705 +;
#X obj 147 730 t f f;
#X obj 129 758 f;
#X obj 129 783 t f b;
#X msg 174 783 0;
#X text 179 706 accumulator by IOhannes on #dataflow;
#X msg 21 230 8;
#X obj 21 255 t f b;
#X obj 21 280 until;
#X msg 218 275 0;
#X obj 21 305 t b b, f 26;
#X obj 200 334 f;
#X obj 200 359 + 1;
#X obj 200 384 - 1;
#X obj 68 576 +;
#X obj 129 833 list;
#X obj 129 808 list prepend;
#X obj 129 908 spigot;
#X obj 200 409 s \$0-step;
#X obj 86 508 r \$0-step;
#X obj 86 533 * 16;
#X obj 189 863 r \$0-step;
#X obj 189 888 == 7;
#X msg 21 36 2;
#X obj 21 61 t f b;
#X obj 21 123 f;
#X msg 73 60 0;
#X obj 21 86 until;
#X obj 21 148 + 1;
#X obj 21 173 - 1;
#X obj 21 200 t b f, f 43;
#X obj 319 235 * 8;
#X obj 319 260 s \$0-offset;
#X obj 99 587 r \$0-offset;
#X obj 68 607 +;
#X text 72 6 this absolute disaster of a subpatch converts the array
into 2 bitmaps to plot on the grid in the minimum amount of OSC messages.
TODO organise and break into subpatches;
#X text 226 814 construct a list of all the values outputted by the
loop and only output once the list is full;
#X text 53 154 run twice \, with offsets of 0 (first half of the grid)
and 8 (second half of the grid);
#X text 60 229 for each row of the grid;
#X text 55 454 loop through each cell in the (8-cell) row);
#X text 177 666 read it and bitshift that value by the position in
the row of the item;
#X text 184 759 add up bitshifted values;
#X obj 129 941 t b a;
#X msg 92 942 0;
#X obj 162 988 list trim;
#X obj 291 918 r \$0-offset;
#X obj 162 963 list prepend map;
#X msg 291 943 map \$1;
#X text 361 940 convert to a grid messsage;
#X obj 162 1013 outlet;
#X obj 21 12 inlet;
#X connect 0 0 1 0;
#X connect 0 1 5 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 2 1;
#X connect 3 0 4 0;
#X connect 4 0 8 0;
#X connect 5 0 2 1;
#X connect 6 0 0 0;
#X connect 7 0 13 0;
#X connect 8 0 7 0;
#X connect 8 1 25 0;
#X connect 8 2 10 1;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 1;
#X connect 12 1 11 1;
#X connect 13 0 14 0;
#X connect 14 0 27 0;
#X connect 14 1 15 0;
#X connect 15 0 12 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 18 1 20 0;
#X connect 19 0 21 0;
#X connect 20 0 22 1;
#X connect 21 0 6 0;
#X connect 21 1 22 0;
#X connect 22 0 23 0;
#X connect 23 0 24 0;
#X connect 23 0 22 1;
#X connect 24 0 29 0;
#X connect 25 0 45 0;
#X connect 26 0 27 1;
#X connect 26 0 28 0;
#X connect 27 0 26 0;
#X connect 28 0 53 0;
#X connect 30 0 31 0;
#X connect 31 0 25 1;
#X connect 32 0 33 0;
#X connect 33 0 28 1;
#X connect 34 0 35 0;
#X connect 35 0 38 0;
#X connect 35 1 37 0;
#X connect 36 0 39 0;
#X connect 37 0 36 1;
#X connect 38 0 36 0;
#X connect 39 0 40 0;
#X connect 39 0 36 1;
#X connect 40 0 41 0;
#X connect 41 0 17 0;
#X connect 41 1 42 0;
#X connect 42 0 43 0;
#X connect 44 0 45 1;
#X connect 45 0 9 0;
#X connect 53 0 54 0;
#X connect 53 1 57 0;
#X connect 54 0 27 1;
#X connect 55 0 60 0;
#X connect 56 0 58 0;
#X connect 57 0 55 0;
#X connect 58 0 57 1;
#X connect 61 0 34 0;
#X restore 481 153 pd plot-life;
#X obj 94 271 route 0 1;
#N canvas 1092 401 784 561 trigger-page 0;
#X obj 14 9 inlet;
#X text 54 16 bottom row keys;
#X obj 14 147 s page;
#X msg 14 122 0;
#X obj 14 59 t b b;
#X obj 46 87 s draw-life;
#X obj 214 102 tabread triggers;
#X obj 272 225 tabwrite triggers;
#X obj 214 67 t f f, f 19;
#X obj 214 127 + 1;
#X obj 329 154 mod 16;
#X obj 344 99 t f f f;
#X obj 280 154 div 16;
#X obj 237 265 pack f f f;
#X obj 237 315 s grid;
#X msg 237 290 lset \$3 \$2 \$1;
#X obj 214 152 mod 9;
#X text 230 29 increment (looping so there's 8 samples) the pressed
key in the triggers \, and reflect that on the grid;
#X obj 237 205 * 2;
#X obj 237 230 - 1;
#X obj 14 34 route 126 127, f 29;
#X obj 89 349 sampler-abstraction;
#X obj 88 320 - 1;
#X obj 214 177 t f f f;
#X obj 89 374 dac~;
#X connect 0 0 20 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 4 1 5 0;
#X connect 6 0 9 0;
#X connect 8 0 6 0;
#X connect 8 1 11 0;
#X connect 9 0 16 0;
#X connect 10 0 13 2;
#X connect 11 0 12 0;
#X connect 11 1 10 0;
#X connect 11 2 7 1;
#X connect 12 0 13 1;
#X connect 13 0 15 0;
#X connect 15 0 14 0;
#X connect 16 0 23 0;
#X connect 18 0 19 0;
#X connect 19 0 13 0;
#X connect 20 0 4 0;
#X connect 20 2 8 0;
#X connect 21 0 24 0;
#X connect 21 0 24 1;
#X connect 22 0 21 0;
#X connect 23 0 22 0;
#X connect 23 1 18 0;
#X connect 23 2 7 0;
#X restore 124 301 pd trigger-page;
#N canvas 2 745 450 250 (subpatch) 0;
#X array triggers 128 float 3;
#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X coords 0 16 128 0 200 140 1 0 0;
#X restore 783 252 graph;
#X obj 333 616 dac~;
#X obj 1009 95 table b0;
#X obj 1009 117 table b1;
#X obj 1009 139 table b2;
#X obj 1009 161 table b3;
#X obj 1009 183 table b4;
#X obj 1009 205 table b5;
#X obj 1009 227 table b6;
#X obj 1009 249 table b7;
#X obj 1135 512 openpanel;
#X obj 1135 492 bng 15 250 50 0 empty empty load 17 7 0 10 -262144
-1 -1;
#X floatatom 1207 488 5 0 7 1 sample - -;
#X obj 1154 566 pack s s;
#X msg 1154 595 read -resize \$1 \$2;
#X obj 1207 512 makefilename b%d;
#X obj 1154 620 soundfiler;
#X obj 333 492 - 1;
#X obj 333 572 clone sampler-abstraction 8;
#X obj 333 517 t f f;
#X obj 333 542 pack f f;
#X text 1132 461 load samples;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 0 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 5 0 11 0;
#X connect 5 0 33 0;
#X connect 6 0 5 1;
#X connect 7 0 9 0;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X connect 11 0 12 0;
#X connect 11 1 7 0;
#X connect 11 2 8 1;
#X connect 14 0 15 0;
#X connect 19 0 16 0;
#X connect 22 0 21 0;
#X connect 23 0 24 0;
#X connect 23 1 28 0;
#X connect 24 0 25 0;
#X connect 25 0 26 0;
#X connect 26 0 25 1;
#X connect 26 0 27 0;
#X connect 27 0 31 0;
#X connect 28 0 25 1;
#X connect 29 0 23 0;
#X connect 30 0 37 0;
#X connect 31 0 30 0;
#X connect 31 1 51 0;
#X connect 31 2 33 1;
#X connect 32 0 33 0;
#X connect 33 0 35 0;
#X connect 35 0 36 0;
#X connect 36 0 37 1;
#X connect 36 1 35 1;
#X connect 37 0 38 0;
#X connect 38 0 53 0;
#X connect 7 0 0 0;
#X connect 11 0 57 0;
#X connect 13 0 11 0;
#X connect 14 0 13 0;
#X connect 15 0 17 0;
#X connect 15 1 37 0;
#X connect 17 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 8 0;
#X connect 21 0 13 1;
#X connect 21 0 30 0;
#X connect 22 0 24 0;
#X connect 24 0 29 0;
#X connect 24 1 23 0;
#X connect 26 0 24 0;
#X connect 27 0 32 0;
#X connect 29 0 25 0;
#X connect 32 0 38 0;
#X connect 33 0 27 0;
#X connect 33 1 32 1;
#X connect 36 0 15 0;
#X connect 37 0 8 0;
#X connect 38 0 35 0;
#X connect 38 1 39 0;
#X connect 39 0 36 0;
#X connect 41 0 42 0;
#X connect 42 0 43 0;
#X connect 43 0 44 0;
#X connect 43 1 45 0;
#X connect 44 0 46 0;
#X connect 45 0 47 1;
#X connect 46 0 29 0;
#X connect 46 1 47 0;
#X connect 47 0 48 0;
#X connect 48 0 49 0;
#X connect 48 0 47 1;
#X connect 49 0 50 0;
#X connect 49 0 55 0;
#X connect 50 0 51 1;
#X connect 51 0 32 0;
#X connect 52 0 53 1;
#X connect 52 0 54 0;
#X connect 53 0 52 0;
#X connect 50 0 53 0;
#X connect 51 0 50 0;
#X connect 52 0 55 0;
#X connect 53 0 54 0;
#X connect 54 0 56 0;
#X connect 55 0 54 1;
#X connect 56 0 57 0;
#X connect 56 1 59 0;
#X connect 57 0 53 1;
#X connect 58 0 60 0;
#X connect 59 0 58 0;
#X connect 55 0 53 1;
#X connect 57 0 59 0;
#X connect 58 0 41 0;
#X connect 58 0 41 1;
#X connect 59 0 60 0;
#X connect 59 1 60 1;
#X connect 60 0 58 0;
#X coords 0 0 1 1 85 60 0;

12
sampler-abstraction.pd Normal file
View File

@ -0,0 +1,12 @@
#N canvas 614 500 450 300 12;
#X obj 75 108 tabplay~ b0;
#X obj 75 49 makefilename b%d;
#X msg 75 74 set \$1 \, bang;
#X obj 73 20 inlet;
#X obj 76 166 outlet~;
#X obj 75 133 *~ 0.125;
#X connect 0 0 5 0;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 3 0 1 0;
#X connect 5 0 4 0;