pd-experiments/life.pd

230 lines
5.3 KiB
Plaintext

#N canvas 618 113 1254 596 12;
#X obj 97 48 grid;
#X obj 97 73 route 1;
#X msg 21 28 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 98 unpack f f;
#X obj 97 141 +;
#X obj 164 121 * 16;
#X obj 120 193 tabread life0;
#X obj 120 253 tabwrite life0;
#X obj 120 218 == 0;
#X obj 97 16 r grid;
#X obj 97 166 t b f f;
#X obj 97 276 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;
#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 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
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 connect 0 0 25 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 2 1;
#X connect 3 0 27 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 5 0 11 0;
#X connect 6 0 7 1;
#X connect 7 0 13 0;
#X connect 8 0 2 0;
#X connect 9 0 1 0;
#X connect 9 1 8 0;
#X connect 10 0 4 0;
#X connect 11 0 7 0;
#X connect 12 0 13 1;
#X connect 13 0 14 0;
#X connect 14 0 19 0;
#X connect 16 0 12 0;
#X connect 18 0 9 0;
#X connect 19 0 20 0;
#X connect 20 0 21 0;
#X connect 21 0 22 1;
#X connect 21 1 20 1;
#X connect 22 0 23 0;
#X connect 23 0 29 0;
#X connect 23 1 24 0;
#X connect 24 0 21 0;
#X connect 25 0 18 0;
#X connect 25 1 17 0;
#X connect 27 0 28 0;
#X connect 27 1 10 0;
#X connect 28 0 22 0;
#X restore 304 419 pd neighbors;
#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;
#X msg 305 232 128;
#X obj 304 287 until;
#X obj 304 312 f;
#X obj 304 337 + 1;
#X obj 305 257 t f b;
#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 msg 356 291 0;
#X obj 304 362 - 1;
#X obj 304 444 sel 4 3, f 9;
#X msg 364 475 0;
#X msg 334 475 1;
#X obj 334 537 tabwrite life1;
#X obj 254 473 spigot;
#X obj 235 498 tabread life0;
#X obj 304 387 t f f f f, f 18;
#X obj 50 407 sel 127;
#X obj 82 458 array get life1 0 128;
#X obj 50 432 t b b;
#X obj 82 483 array set life0 0 128;
#X text 307 11 this could all be optimised \, but I went for a "simple"
solution \, and I'm bad at patching. TODO optimise drawing \, implement
sample triggers;
#X obj 50 512 s draw;
#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 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 13 0 25 0;
#X connect 14 0 15 0;
#X connect 18 0 28 0;
#X connect 20 0 24 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 23 0 27 0;
#X connect 23 0 22 1;
#X connect 24 0 21 0;
#X connect 24 1 26 0;
#X connect 25 0 16 0;
#X connect 26 0 22 1;
#X connect 27 0 34 0;
#X connect 28 0 32 1;
#X connect 28 1 30 0;
#X connect 28 2 29 0;
#X connect 29 0 31 0;
#X connect 30 0 31 0;
#X connect 32 0 33 0;
#X connect 33 0 31 0;
#X connect 34 0 35 0;
#X connect 34 1 32 0;
#X connect 34 2 18 0;
#X connect 34 3 31 1;
#X connect 35 0 37 0;
#X connect 36 0 38 0;
#X connect 37 0 40 0;
#X connect 37 1 36 0;