From 951ec8a99e1e472308d8c2bf9bb26cf70c137981 Mon Sep 17 00:00:00 2001 From: Rob Hamilton Date: Mon, 19 Oct 2020 09:30:05 -0400 Subject: [PATCH] adding Conway gol --- conway.pd | 940 ++++++++++++++++++++++++++++++++++++ conwayOSC/ConwayComposer.py | 331 +++++++++++++ conwayOSC/res/Thumbs.db | Bin 0 -> 8192 bytes conwayOSC/res/alive_16.png | Bin 0 -> 323 bytes conwayOSC/res/alive_32.png | Bin 0 -> 641 bytes conwayOSC/res/alive_64.png | Bin 0 -> 1476 bytes conwayOSC/res/alive_8.png | Bin 0 -> 214 bytes conwayOSC/res/dead_16.png | Bin 0 -> 252 bytes conwayOSC/res/dead_32.png | Bin 0 -> 435 bytes conwayOSC/res/dead_64.png | Bin 0 -> 822 bytes conwayOSC/res/dead_8.png | Bin 0 -> 203 bytes hamilr4.pd | 25 +- masheen.pd | 68 +-- 13 files changed, 1321 insertions(+), 43 deletions(-) create mode 100644 conway.pd create mode 100644 conwayOSC/ConwayComposer.py create mode 100644 conwayOSC/res/Thumbs.db create mode 100644 conwayOSC/res/alive_16.png create mode 100644 conwayOSC/res/alive_32.png create mode 100644 conwayOSC/res/alive_64.png create mode 100644 conwayOSC/res/alive_8.png create mode 100644 conwayOSC/res/dead_16.png create mode 100644 conwayOSC/res/dead_32.png create mode 100644 conwayOSC/res/dead_64.png create mode 100644 conwayOSC/res/dead_8.png diff --git a/conway.pd b/conway.pd new file mode 100644 index 0000000..0468a9e --- /dev/null +++ b/conway.pd @@ -0,0 +1,940 @@ +#N canvas 0 23 611 455 12; +#N canvas 0 23 1916 976 version2 0; +#N canvas 8 23 1920 1030 karplus_strong 0; +#N canvas -9 -9 1920 976 strummer 0; +#X obj 73 581 outlet; +#X obj 157 581 outlet; +#X obj 241 581 outlet; +#X obj 325 581 outlet; +#X obj 409 581 outlet; +#X obj 498 581 outlet; +#X obj 228 114 i 0; +#X obj 228 139 + 1; +#X obj 228 168 % 8; +#X obj 273 131 i; +#X obj 272 220 == 0; +#X obj 228 191 t f f; +#X obj 272 243 route 1; +#X obj 241 548 i 52; +#X obj 73 549 i 40; +#X obj 157 549 i 49; +#X obj 325 548 i 55; +#X obj 409 548 i 59; +#X obj 498 548 i 64; +#N canvas 101 96 857 446 chords 0; +#X obj 249 26 inlet; +#X obj 82 265 outlet; +#X obj 132 265 outlet; +#X obj 180 264 outlet; +#X obj 227 265 outlet; +#X obj 276 266 outlet; +#X obj 330 266 outlet; +#X obj 144 201 unpack f f f f f f; +#X msg 202 125 40 45 52 57 61 64; +#X msg 326 126 43 47 52 55 59 67; +#X msg 81 124 40 47 52 55 59 64; +#X obj 249 52 random 4; +#X obj 250 80 route 0 1 2 3; +#X msg 451 124 42 47 54 59 62 64; +#X text 348 50 randomly choose one of four chords \, and output the +midi pitches for each of the six strings.; +#X connect 0 0 11 0; +#X connect 7 0 1 0; +#X connect 7 1 2 0; +#X connect 7 2 3 0; +#X connect 7 3 4 0; +#X connect 7 4 5 0; +#X connect 7 5 6 0; +#X connect 8 0 7 0; +#X connect 9 0 7 0; +#X connect 10 0 7 0; +#X connect 11 0 12 0; +#X connect 12 0 10 0; +#X connect 12 1 8 0; +#X connect 12 2 9 0; +#X connect 12 3 13 0; +#X connect 13 0 7 0; +#X restore 272 304 pd chords; +#X text 270 187 Generate a simple 8 note strum pattern; +#X text 327 245 Every 8 notes \, randomly change chords; +#X obj 483 37 r ds_q; +#X obj 533 37 r ds_w; +#X obj 583 37 r ds_e; +#X obj 633 37 r ds_r; +#X obj 683 37 r ds_t; +#X obj 733 37 r ds_y; +#X obj 163 473 r ds_q; +#X obj 213 473 r ds_w; +#X obj 263 473 r ds_e; +#X obj 313 473 r ds_r; +#X obj 363 473 r ds_t; +#X obj 413 473 r ds_y; +#X obj 615 116 s ds_strum; +#X obj 228 78 r ds_strum; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 8 0 11 0; +#X connect 9 0 6 1; +#X connect 10 0 12 0; +#X connect 11 1 10 0; +#X connect 12 0 19 0; +#X connect 13 0 2 0; +#X connect 14 0 0 0; +#X connect 15 0 1 0; +#X connect 16 0 3 0; +#X connect 17 0 4 0; +#X connect 18 0 5 0; +#X connect 19 0 14 0; +#X connect 19 1 15 0; +#X connect 19 2 13 0; +#X connect 19 3 16 0; +#X connect 19 4 17 0; +#X connect 19 5 18 0; +#X connect 22 0 34 0; +#X connect 23 0 34 0; +#X connect 24 0 34 0; +#X connect 25 0 34 0; +#X connect 26 0 34 0; +#X connect 27 0 34 0; +#X connect 28 0 14 0; +#X connect 29 0 15 0; +#X connect 30 0 13 0; +#X connect 31 0 16 0; +#X connect 32 0 17 0; +#X connect 33 0 18 0; +#X connect 35 0 6 0; +#X restore 334 153 pd strummer; +#X obj 496 187 hsl 180 15 1 40 0 0 empty \$0-width_ctrl width -2 -8 +1 10 -262144 -1 -1 3213 1; +#X obj 495 218 hsl 180 15 0.9 0.999 0 0 empty \$0-decay_ctrl decay +-2 -8 1 10 -262144 -1 -1 17177 1; +#X obj 495 248 hsl 180 15 100 8000 0 0 empty \$0-cutoff_ctrl cutoff +-2 -8 1 10 -262144 -1 -1 12689 1; +#N canvas 540 332 847 508 plucked_instrument 0; +#X obj 22 63 inlet; +#X obj 92 60 inlet; +#X obj 175 60 inlet; +#X obj 241 59 inlet; +#X obj 311 60 inlet; +#X obj 374 63 inlet; +#X obj 473 65 inlet; +#X obj 515 65 inlet; +#X obj 557 65 inlet; +#X text 17 16 6 inlets representing the six strings of our instrument. +A midi note integer message to any inlet excites that particular string +at the specified pitch.; +#X text 469 46 Width \, decay \, and cutoff inlets; +#X obj 21 165 karpluck~; +#X obj 21 373 outlet~; +#X obj 21 349 *~ 0.25; +#X obj 473 128 s \$0-width; +#X obj 516 107 s \$0-decay; +#X obj 557 87 s \$0-cutoff; +#X obj 106 87 r \$0-width; +#X obj 188 89 r \$0-decay; +#X obj 264 90 r \$0-cutoff; +#X obj 92 181 karpluck~; +#X obj 175 203 karpluck~; +#X obj 241 224 karpluck~; +#X obj 309 233 karpluck~; +#X obj 374 264 karpluck~; +#X text 334 112 comment; +#X text 73 343 scale the output down by approx 12dB to avoid clipping +; +#X connect 0 0 11 0; +#X connect 1 0 20 0; +#X connect 2 0 21 0; +#X connect 3 0 22 0; +#X connect 4 0 23 0; +#X connect 5 0 24 0; +#X connect 6 0 14 0; +#X connect 7 0 15 0; +#X connect 8 0 16 0; +#X connect 11 0 13 0; +#X connect 13 0 12 0; +#X connect 17 0 11 1; +#X connect 17 0 20 1; +#X connect 17 0 21 1; +#X connect 17 0 22 1; +#X connect 17 0 23 1; +#X connect 17 0 24 1; +#X connect 18 0 11 2; +#X connect 18 0 20 2; +#X connect 18 0 21 2; +#X connect 18 0 22 2; +#X connect 18 0 23 2; +#X connect 18 0 24 2; +#X connect 19 0 11 3; +#X connect 19 0 20 3; +#X connect 19 0 22 3; +#X connect 19 0 21 3; +#X connect 19 0 23 3; +#X connect 19 0 24 3; +#X connect 20 0 13 0; +#X connect 21 0 13 0; +#X connect 22 0 13 0; +#X connect 23 0 13 0; +#X connect 24 0 13 0; +#X restore 329 281 pd plucked_instrument; +#X obj 411 118 hsl 180 15 1 250 0 0 empty \$0-strum_speed_ctrl strum_speed +-2 -8 1 10 -262144 -1 -1 503 1; +#X obj 334 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 786 117 loadbang; +#X msg 781 147 0.995; +#X msg 824 147 5700; +#X obj 751 241 s \$0-width_ctrl; +#X obj 781 217 s \$0-decay_ctrl; +#X obj 824 196 s \$0-cutoff_ctrl; +#X text 83 112 Click here to start strummer -->; +#X msg 751 147 8; +#X obj 857 173 s \$0-strum_speed_ctrl; +#X msg 864 148 8; +#X obj 329 342 outlet~; +#X text 94 426 Karplus-Strong algorithm - physical model of a string +; +#X connect 0 0 4 0; +#X connect 0 1 4 1; +#X connect 0 2 4 2; +#X connect 0 3 4 3; +#X connect 0 4 4 4; +#X connect 0 5 4 5; +#X connect 1 0 4 6; +#X connect 2 0 4 7; +#X connect 3 0 4 8; +#X connect 4 0 17 0; +#X connect 7 0 14 0; +#X connect 7 0 8 0; +#X connect 7 0 9 0; +#X connect 7 0 16 0; +#X connect 8 0 11 0; +#X connect 9 0 12 0; +#X connect 14 0 10 0; +#X connect 16 0 15 0; +#X restore 442 227 pd karplus_strong; +#X text 430 193 "Guitar" String model; +#N canvas 372 32 851 837 drums-horrible-snare 0; +#X obj 106 98 noise~; +#X obj 163 98 line~; +#X obj 106 152 *~; +#X obj 148 220 hsl 128 15 0 1 0 0 empty empty Volume_0-1 -2 -6 0 8 +-262144 -1 -1 0 1; +#X msg 163 70 1 \, 0 50; +#X obj 163 42 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1 +-1; +#X obj 106 188 lop~ 400; +#X floatatom 159 164 5 0 0 0 - - -; +#X obj 92 295 output~; +#X text 15 97 White noise; +#X text 170 188 Low-pass filter; +#X obj 121 7 metro 200; +#X obj 81 12 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 161 296 outlet~; +#X obj 222 7 r ds_s; +#X obj 106 247 *~ 10; +#X connect 0 0 2 0; +#X connect 1 0 2 1; +#X connect 2 0 6 0; +#X connect 3 0 15 1; +#X connect 4 0 1 0; +#X connect 5 0 4 0; +#X connect 6 0 15 0; +#X connect 7 0 6 1; +#X connect 11 0 5 0; +#X connect 12 0 11 0; +#X connect 14 0 5 0; +#X connect 15 0 8 0; +#X connect 15 0 8 1; +#X connect 15 0 13 0; +#X restore 247 533 pd drums-horrible-snare; +#N canvas 310 103 839 822 drums-horrible-kick 0; +#X obj 209 153 line~; +#X obj 82 222 *~; +#X obj 118 235 hsl 128 15 0 1 0 0 empty empty Volume_0-1 -2 -6 0 8 +-262144 -1 -1 0 1; +#X msg 209 129 1 \, 0 50; +#X obj 152 44 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1 +-1; +#X obj 82 191 osc~; +#X obj 82 153 line~; +#X msg 82 130 220 \, 50 20; +#X msg 164 130 0.5; +#X text 71 54 comment; +#X obj 61 320 output~; +#X obj 131 321 outlet~; +#X obj 152 8 r ds_k; +#X obj 82 265 *~ 2; +#X connect 0 0 1 1; +#X connect 1 0 13 0; +#X connect 2 0 13 1; +#X connect 3 0 0 0; +#X connect 4 0 3 0; +#X connect 4 0 7 0; +#X connect 4 0 8 0; +#X connect 5 0 1 0; +#X connect 6 0 5 0; +#X connect 7 0 6 0; +#X connect 8 0 5 1; +#X connect 12 0 4 0; +#X connect 13 0 10 0; +#X connect 13 0 10 1; +#X connect 13 0 11 0; +#X restore 12 27 pd drums-horrible-kick; +#N canvas 75 23 1264 1030 horrible-marimba 0; +#X obj 245 457 line~; +#X obj 230 484 *~; +#X obj 243 41 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1 +-1; +#X obj 228 396 osc~; +#X obj 426 255 noise~; +#X obj 484 293 line~; +#X obj 427 347 *~; +#X obj 427 383 lop~ 5000; +#X obj 132 320 line~; +#X obj 85 317 osc~; +#X msg 132 290 1 \, 0 100; +#X floatatom 230 133 3 0 0 0 - - -; +#X floatatom 262 132 3 0 0 0 - - -; +#X obj 85 350 *~; +#X obj 85 287 * 3; +#X obj 85 383 *~ 1; +#X obj 427 442 *~ 0.5; +#X obj 229 178 mtof; +#X msg 484 265 1 \, 0 44; +#X msg 245 428 1 \, 0 400; +#X obj 230 510 *~ 0.4; +#X obj 262 178 * 0.33; +#X obj 262 200 * 0.4; +#X obj 287 41 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X obj 96 40 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X text 101 19 Pitch (midi); +#X text 293 19 Velocity (volume); +#X obj 211 654 output~; +#X connect 0 0 1 1; +#X connect 1 0 20 0; +#X connect 2 0 19 0; +#X connect 2 0 10 0; +#X connect 2 0 18 0; +#X connect 2 0 12 0; +#X connect 2 0 11 0; +#X connect 3 0 1 0; +#X connect 4 0 6 0; +#X connect 5 0 6 1; +#X connect 6 0 7 0; +#X connect 7 0 16 0; +#X connect 8 0 13 1; +#X connect 9 0 13 0; +#X connect 10 0 8 0; +#X connect 11 0 17 0; +#X connect 12 0 21 0; +#X connect 13 0 15 0; +#X connect 14 0 9 0; +#X connect 15 0 27 0; +#X connect 16 0 27 0; +#X connect 17 0 3 0; +#X connect 17 0 14 0; +#X connect 18 0 5 0; +#X connect 19 0 0 0; +#X connect 20 0 27 1; +#X connect 20 0 27 0; +#X connect 21 0 22 0; +#X connect 22 0 20 1; +#X connect 22 0 15 1; +#X connect 22 0 16 1; +#X connect 23 0 12 0; +#X connect 24 0 11 0; +#X restore 20 91 pd horrible-marimba; +#X text 162 501 "Horrible" Instruments; +#N canvas 305 23 927 717 bells 0; +#X obj 47 459 catch~ sum; +#X obj 359 284 s frequency; +#X obj 473 284 s duration; +#X floatatom 473 234 0 0 0 0 - - -; +#X obj 473 259 * 100; +#X obj 359 259 mtof; +#X floatatom 359 234 0 0 0 0 - - -; +#X text 92 17 ADDITIVE SYNTHESIS; +#X text 511 224 duration in tenths; +#X text 513 240 of a second; +#X text 397 233 pitch; +#X text 443 528 updated for Pd version 0.37; +#X text 36 93 Partial takes as arguments an amplitude \, a relative +frequency \, a detuning frequency \, and a relative duration. You set +absolute duration and pitch using the controls below. Hit the trigger +to make sound.; +#X obj 46 174 partial 1 1 0.56 0; +#X text 37 41 This patch demonstrates using an abstraction \, "partial" +\, to make a simple additive synthesis instrument originally from Jean-Claude +Risset.; +#X obj 359 179 loadbang; +#X msg 359 202 72; +#X msg 473 204 40; +#X obj 362 332 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text 395 334 <-- click to play a note; +#X obj 362 368 s trigger; +#X obj 46 199 partial 0.67 0.9 0.56 1; +#X obj 46 224 partial 1 0.65 0.92 0; +#X obj 46 249 partial 1.8 0.55 0.92 1.7; +#X obj 46 274 partial 2.67 0.325 1.19 0; +#X obj 46 299 partial 1.67 0.35 1.7 0; +#X obj 46 324 partial 1.46 0.25 2 0; +#X obj 46 349 partial 1.33 0.2 2.74 0; +#X obj 46 374 partial 1.33 0.15 3 0; +#X obj 46 399 partial 1 0.1 3.76 0; +#X obj 46 424 partial 1.33 0.075 4.07 0; +#X obj 456 138 inlet; +#X obj 529 140 inlet; +#X obj 308 309 inlet; +#X text 445 118 Midi Pitch; +#X text 525 105 duration in tenths; +#X text 527 121 of a second; +#X obj 47 498 output~; +#X connect 0 0 37 0; +#X connect 0 0 37 1; +#X connect 3 0 4 0; +#X connect 4 0 2 0; +#X connect 5 0 1 0; +#X connect 6 0 5 0; +#X connect 15 0 16 0; +#X connect 15 0 17 0; +#X connect 16 0 6 0; +#X connect 17 0 3 0; +#X connect 18 0 20 0; +#X connect 31 0 6 0; +#X connect 32 0 3 0; +#X connect 33 0 18 0; +#X restore 36 135 pd bells; +#X text 18 114 Risset "Bells" model; +#N canvas -9 -9 1920 976 ds_osc 0; +#X obj 687 8 netreceive -u -b 8000; +#X obj 687 45 unpack f f f f f f f f f f f f f f f f; +#X floatatom 897 89 5 0 0 0 - - -; +#X obj 537 257 sel 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 +81 82 83 84 85 86 87 88 89 90, f 83; +#X obj 474 565 sel 97 98 99 100 101 102 103 104 105 106 107 108 109 +110 111 112 113 114 115 116 117 118 119 120 121 122, f 106; +#X text 763 234 CAPITAL LETTERS; +#X text 756 541 lowercase letters; +#X obj 198 412 s ds_A; +#X obj 249 412 s ds_B; +#X obj 300 412 s ds_C; +#X obj 351 412 s ds_D; +#X obj 402 412 s ds_E; +#X obj 453 412 s ds_F; +#X obj 504 412 s ds_G; +#X obj 555 412 s ds_H; +#X obj 605 412 s ds_I; +#X obj 656 412 s ds_J; +#X obj 707 412 s ds_K; +#X obj 758 412 s ds_L; +#X obj 809 412 s ds_M; +#X obj 860 412 s ds_N; +#X obj 911 412 s ds_O; +#X obj 962 412 s ds_P; +#X obj 1013 412 s ds_Q; +#X obj 1064 412 s ds_R; +#X obj 1115 412 s ds_S; +#X obj 1166 412 s ds_T; +#X obj 1218 412 s ds_U; +#X obj 1269 412 s ds_V; +#X obj 1320 412 s ds_W; +#X obj 1371 412 s ds_X; +#X obj 1422 412 s ds_Y; +#X obj 1473 412 s ds_Z; +#X obj 897 125 s ds_dec; +#X obj 192 666 s ds_a; +#X obj 243 666 s ds_b; +#X obj 294 666 s ds_c; +#X obj 345 666 s ds_d; +#X obj 396 666 s ds_e; +#X obj 447 666 s ds_f; +#X obj 498 666 s ds_g; +#X obj 549 666 s ds_h; +#X obj 599 666 s ds_i; +#X obj 650 666 s ds_j; +#X obj 701 666 s ds_k; +#X obj 752 666 s ds_l; +#X obj 803 666 s ds_m; +#X obj 854 666 s ds_n; +#X obj 905 666 s ds_o; +#X obj 956 666 s ds_p; +#X obj 1007 666 s ds_q; +#X obj 1058 666 s ds_r; +#X obj 1109 666 s ds_s; +#X obj 1160 666 s ds_t; +#X obj 1212 666 s ds_u; +#X obj 1263 666 s ds_v; +#X obj 1314 666 s ds_w; +#X obj 1365 666 s ds_x; +#X obj 1416 666 s ds_y; +#X obj 1467 666 s ds_z; +#X obj 537 221 r ds_dec; +#X obj 474 531 r ds_dec; +#X connect 0 0 1 0; +#X connect 1 12 2 0; +#X connect 2 0 33 0; +#X connect 3 0 7 0; +#X connect 3 1 8 0; +#X connect 3 2 9 0; +#X connect 3 3 10 0; +#X connect 3 4 11 0; +#X connect 3 5 12 0; +#X connect 3 6 13 0; +#X connect 3 7 14 0; +#X connect 3 8 15 0; +#X connect 3 9 16 0; +#X connect 3 10 17 0; +#X connect 3 11 18 0; +#X connect 3 12 19 0; +#X connect 3 13 20 0; +#X connect 3 14 21 0; +#X connect 3 15 22 0; +#X connect 3 16 23 0; +#X connect 3 17 24 0; +#X connect 3 18 25 0; +#X connect 3 19 26 0; +#X connect 3 20 27 0; +#X connect 3 21 28 0; +#X connect 3 22 29 0; +#X connect 3 23 30 0; +#X connect 3 24 31 0; +#X connect 3 25 32 0; +#X connect 4 0 34 0; +#X connect 4 1 35 0; +#X connect 4 2 36 0; +#X connect 4 3 37 0; +#X connect 4 4 38 0; +#X connect 4 5 39 0; +#X connect 4 6 40 0; +#X connect 4 7 41 0; +#X connect 4 8 42 0; +#X connect 4 9 43 0; +#X connect 4 10 44 0; +#X connect 4 11 45 0; +#X connect 4 12 46 0; +#X connect 4 13 47 0; +#X connect 4 14 48 0; +#X connect 4 15 49 0; +#X connect 4 16 50 0; +#X connect 4 17 51 0; +#X connect 4 18 52 0; +#X connect 4 19 53 0; +#X connect 4 20 54 0; +#X connect 4 21 55 0; +#X connect 4 22 56 0; +#X connect 4 23 57 0; +#X connect 4 24 58 0; +#X connect 4 25 59 0; +#X connect 60 0 3 0; +#X connect 61 0 4 0; +#X restore 645 148 pd ds_osc; +#X text 583 123 For use with ConwayComposer.py; +#X obj 278 44 inlet; +#X obj 538 44 inlet; +#X text 277 24 TEMPO; +#X text 533 24 CONTROL; +#X obj 272 333 outlet~; +#X obj 535 334 outlet; +#X text 150 194 Really Useful Plugins; +#N canvas -9 -9 1920 976 really-useful-kick 0; +#N canvas 1265 53 634 693 kick_synth 0; +#X floatatom 267 137 5 0 0 0 - - -; +#X text 270 197 fDec = 250; +#X floatatom 292 356 5 0 0 0 - - -; +#X text 327 360 pScale = 1; +#X obj 233 401 *~ 1; +#X obj 233 422 phasor~; +#X obj 214 107 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 233 442 expr~ if ($v1 > 0.5 \, 0 \, 1); +#X obj 265 471 noise~; +#X floatatom 450 371 5 0 0 0 - - -; +#X obj 339 413 *~ 1.5; +#X obj 236 514 vcf~ 0.5; +#X obj 199 625 *~; +#X obj 357 535 osc~; +#X floatatom 488 471 5 0 0 0 - - -; +#X obj 356 504 *~ 1; +#X obj 221 160 f 250; +#X obj 210 46 inlet; +#X text 204 25 trig; +#X obj 265 115 inlet; +#X text 265 93 decay time; +#X obj 292 325 inlet; +#X text 290 305 pitchScale; +#X text 432 322 filterScale; +#X obj 432 336 inlet; +#X text 453 448 sineVol; +#X obj 199 646 outlet~; +#X obj 500 447 inlet; +#N canvas 0 23 450 300 vol_env_kick 0; +#X obj 125 167 vline~; +#X obj 125 188 *~; +#X msg 115 115 0.5 \, 1 5 \, 0.5 60 5 \, 0 \$1 65; +#X obj 108 69 inlet; +#X obj 125 209 outlet~; +#X connect 0 0 1 0; +#X connect 0 0 1 1; +#X connect 1 0 4 0; +#X connect 2 0 0 0; +#X connect 3 0 2 0; +#X restore 51 502 pd vol_env_kick; +#N canvas 0 23 450 300 pitch_env_kick 0; +#X obj 37 37 inlet; +#X obj 33 107 vline~; +#X obj 36 222 mtof~; +#X msg 36 73 1 \, 0.5 5 \, 0 \$1 5; +#X obj 33 155 *~ 80; +#X obj 33 176 +~ 29; +#X obj 33 128 *~; +#X obj 36 243 outlet~; +#X connect 0 0 3 0; +#X connect 1 0 6 0; +#X connect 1 0 6 1; +#X connect 2 0 7 0; +#X connect 3 0 1 0; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X connect 6 0 4 0; +#X restore 221 247 pd pitch_env_kick; +#X connect 0 0 16 1; +#X connect 2 0 4 1; +#X connect 4 0 5 0; +#X connect 5 0 7 0; +#X connect 6 0 16 0; +#X connect 7 0 11 0; +#X connect 8 0 11 0; +#X connect 9 0 10 1; +#X connect 10 0 11 1; +#X connect 11 1 12 1; +#X connect 12 0 26 0; +#X connect 13 0 12 1; +#X connect 14 0 15 1; +#X connect 15 0 13 0; +#X connect 16 0 28 0; +#X connect 16 0 29 0; +#X connect 17 0 6 0; +#X connect 19 0 0 0; +#X connect 21 0 2 0; +#X connect 24 0 9 0; +#X connect 27 0 14 0; +#X connect 28 0 12 0; +#X connect 29 0 4 0; +#X connect 29 0 10 0; +#X connect 29 0 15 0; +#X restore 41 346 pd kick_synth; +#X f 64; +#X obj 38 97 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X floatatom 114 306 5 0 0 1 decay - -; +#X obj 115 157 vsl 15 128 50 2000 1 0 empty kick_decay empty 0 -9 0 +10 -262144 -1 -1 0 1; +#X floatatom 193 310 5 0 0 1 pitch_scale - -; +#X obj 193 166 vsl 15 128 0.1 3 0 0 empty kick_pitch empty 0 -9 0 10 +-262144 -1 -1 0 1; +#X floatatom 419 311 5 0 0 1 sine_scale - -; +#X obj 419 167 vsl 15 128 0 2 0 0 empty kick_sine empty 0 -9 0 10 -262144 +-1 -1 0 1; +#X obj 38 56 r kick; +#X floatatom 300 312 5 0 0 1 filter_scale - -; +#X obj 300 168 vsl 15 128 0.1 3 0 0 empty kick_filter empty 0 -9 0 +10 -262144 -1 -1 0 1; +#X msg 302 794 \; kick_decay 250 \; kick_pitch 1 \; kick_filter 1.5 +\; kick_sine 1 \;; +#X msg 446 794 \; kick_decay 150 \; kick_pitch 0.5 \; kick_filter 1.5 +\; kick_sine 1 \;; +#X msg 17 792 \; kick_decay 450 \; kick_pitch 0.25 \; kick_filter 0.5 +\; kick_sine 1 \;; +#X obj 553 59 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 553 101 s kick; +#X obj 553 80 metro 450; +#X msg 586 795 \; kick_decay 1500 \; kick_pitch 0.5 \; kick_filter +0.5 \; kick_sine 0.5 \;; +#X msg 156 793 \; kick_decay 50 \; kick_pitch 2.25 \; kick_filter 1.5 +\; kick_sine 0.8 \;; +#X obj 91 64 r ds_k; +#X obj 41 408 outlet~; +#X obj 279 449 r ds_k; +#X obj 279 487 i 0; +#X obj 279 512 + 1; +#X obj 324 504 i; +#X obj 323 593 == 0; +#X obj 279 564 t f f; +#X obj 323 616 route 1; +#X obj 279 541 % 12; +#X text 380 618 Every 12 kick \, randomly change preset; +#X obj 323 649 random 5; +#X obj 323 675 sel 0 1 2 3 4; +#X obj 41 377 *~ 1; +#X connect 0 0 32 0; +#X connect 1 0 0 0; +#X connect 2 0 0 1; +#X connect 3 0 2 0; +#X connect 4 0 0 2; +#X connect 5 0 4 0; +#X connect 6 0 0 4; +#X connect 7 0 6 0; +#X connect 8 0 1 0; +#X connect 9 0 0 3; +#X connect 10 0 9 0; +#X connect 14 0 16 0; +#X connect 16 0 15 0; +#X connect 19 0 1 0; +#X connect 21 0 22 0; +#X connect 22 0 23 0; +#X connect 23 0 28 0; +#X connect 24 0 22 1; +#X connect 25 0 27 0; +#X connect 26 1 25 0; +#X connect 27 0 30 0; +#X connect 28 0 24 0; +#X connect 28 0 26 0; +#X connect 30 0 31 0; +#X connect 31 0 13 0; +#X connect 31 1 18 0; +#X connect 31 2 11 0; +#X connect 31 3 12 0; +#X connect 31 4 17 0; +#X connect 32 0 20 0; +#X restore 240 227 pd really-useful-kick; +#X text 11 5 "Horrible" Instruments; +#N canvas 310 103 839 822 drums-horrible-kick 0; +#X obj 209 153 line~; +#X obj 82 222 *~; +#X obj 118 235 hsl 128 15 0 1 0 0 empty empty Volume_0-1 -2 -6 0 8 +-262144 -1 -1 0 1; +#X msg 209 129 1 \, 0 50; +#X obj 152 44 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1 +-1; +#X obj 82 191 osc~; +#X obj 82 153 line~; +#X msg 82 130 220 \, 50 20; +#X msg 164 130 0.5; +#X text 71 54 comment; +#X obj 61 320 output~; +#X obj 131 321 outlet~; +#X obj 152 8 r ds_k; +#X obj 82 265 *~ 2; +#X connect 0 0 1 1; +#X connect 1 0 13 0; +#X connect 2 0 13 1; +#X connect 3 0 0 0; +#X connect 4 0 3 0; +#X connect 4 0 7 0; +#X connect 4 0 8 0; +#X connect 5 0 1 0; +#X connect 6 0 5 0; +#X connect 7 0 6 0; +#X connect 8 0 5 1; +#X connect 12 0 4 0; +#X connect 13 0 10 0; +#X connect 13 0 10 1; +#X connect 13 0 11 0; +#X restore 56 532 pd drums-horrible-kick; +#N canvas -9 -9 1920 976 really-useful-snare 0; +#X obj 69 142 r snare; +#X obj 69 171 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 360 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 360 44 metro 110; +#X obj 360 76 s snare; +#X floatatom 420 13 5 0 0 0 - - -; +#N canvas 0 50 1351 825 ds_snare_808 0; +#X obj 134 178 noise~; +#X obj 134 225 *~; +#X obj 211 61 f 250; +#X floatatom 315 30 5 0 0 0 - - -; +#N canvas 0 50 450 300 vol_env_snare 0; +#X obj 39 67 vline~; +#X obj 39 97 *~; +#X msg 39 38 1 0.5 \, 0 \$1 0.5; +#X obj 39 12 inlet; +#X obj 39 120 outlet~; +#X connect 0 0 1 0; +#X connect 0 0 1 1; +#X connect 1 0 4 0; +#X connect 2 0 0 0; +#X connect 3 0 2 0; +#X restore 211 107 pd vol_env_snare; +#X obj 134 280 vcf~ 3; +#X obj 189 280 vcf~ 5; +#X text 266 279 first outlet of vcf is BANDPASS; +#N canvas 0 50 450 300 cutoff_env_snare 0; +#X obj 39 67 vline~; +#X obj 39 97 *~; +#X msg 39 38 1 0.5 \, 0 \$1 0.5; +#X obj 39 12 inlet; +#X obj 39 120 outlet~; +#X connect 0 0 1 0; +#X connect 0 0 1 1; +#X connect 1 0 4 0; +#X connect 2 0 0 0; +#X connect 3 0 2 0; +#X restore 363 157 pd cutoff_env_snare; +#X obj 363 185 *~ 8000; +#X obj 363 208 +~ 100; +#X obj 431 185 *~ 5000; +#X obj 431 208 +~ 200; +#N canvas 0 50 860 754 FM_osc_snare 0; +#X obj 48 138 osc~; +#X obj 48 181 *~; +#X obj 100 139 *~; +#X obj 48 96 +~; +#X obj 16 39 sig~ 150; +#X obj 109 17 osc~ 50; +#X obj 109 40 *~ 30; +#X obj 109 111 inlet~; +#X obj 48 210 outlet~; +#X connect 0 0 1 0; +#X connect 1 0 8 0; +#X connect 2 0 1 1; +#X connect 3 0 0 0; +#X connect 4 0 3 0; +#X connect 5 0 6 0; +#X connect 6 0 3 1; +#X connect 7 0 2 0; +#X connect 7 0 2 1; +#X restore 11 154 pd FM_osc_snare; +#X obj 363 107 * 2; +#X floatatom 543 98 5 0 0 0 - - -; +#X obj 543 120 * 0.6; +#X obj 543 70 inlet; +#X obj 315 4 inlet; +#X obj 211 27 inlet; +#X obj 174 353 outlet~; +#X connect 0 0 1 0; +#X connect 1 0 5 0; +#X connect 1 0 6 0; +#X connect 2 0 4 0; +#X connect 2 0 14 0; +#X connect 3 0 2 1; +#X connect 4 0 1 1; +#X connect 4 0 13 0; +#X connect 5 0 20 0; +#X connect 6 0 20 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 5 1; +#X connect 11 0 12 0; +#X connect 12 0 6 1; +#X connect 13 0 5 0; +#X connect 13 0 6 0; +#X connect 14 0 8 0; +#X connect 15 0 16 0; +#X connect 15 0 9 1; +#X connect 16 0 11 1; +#X connect 17 0 15 0; +#X connect 18 0 3 0; +#X connect 19 0 2 0; +#X restore 89 206 pd ds_snare_808; +#X floatatom 140 169 5 0 0 0 - - -; +#X text 178 169 Decay; +#X floatatom 225 170 5 0 0 0 - - -; +#X text 263 169 Noise; +#X obj 140 20 vsl 15 128 10 3000 0 0 empty snare_decay snare_decay +0 -9 0 10 -262144 -1 -1 0 1; +#X obj 225 21 vsl 15 128 500 10000 1 0 empty snare_noise snare_noise +0 -9 0 10 -262144 -1 -1 0 1; +#X msg 350 337 \; snare_decay 300 \; snare_noise 6000 \;; +#X msg 491 337 \; snare_decay 50 \; snare_noise 6000 \;; +#X msg 777 338 \; snare_decay 150 \; snare_noise 6000 \;; +#X msg 634 337 \; snare_decay 800 \; snare_noise 3000 \;; +#X obj 89 292 outlet~; +#X obj 6 142 r ds_s; +#X obj 537 53 i 0; +#X obj 537 78 + 1; +#X obj 582 70 i; +#X obj 581 159 == 0; +#X obj 537 130 t f f; +#X obj 581 182 route 1; +#X obj 537 107 % 12; +#X obj 581 241 sel 0 1 2 3; +#X obj 581 215 random 4; +#X text 638 184 Every 12 snare \, randomly change preset; +#X obj 89 257 *~ 1; +#X obj 537 15 r ds_s; +#X connect 0 0 1 0; +#X connect 1 0 6 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 5 0 3 1; +#X connect 6 0 29 0; +#X connect 7 0 6 1; +#X connect 9 0 6 2; +#X connect 11 0 7 0; +#X connect 12 0 9 0; +#X connect 18 0 1 0; +#X connect 19 0 20 0; +#X connect 20 0 25 0; +#X connect 21 0 19 1; +#X connect 22 0 24 0; +#X connect 23 1 22 0; +#X connect 24 0 27 0; +#X connect 25 0 21 0; +#X connect 25 0 23 0; +#X connect 26 0 13 0; +#X connect 26 1 14 0; +#X connect 26 2 16 0; +#X connect 26 3 15 0; +#X connect 27 0 26 0; +#X connect 29 0 17 0; +#X connect 30 0 19 0; +#X restore 51 229 pd really-useful-snare; +#N canvas 372 32 851 837 drums-horrible-snare 0; +#X obj 106 98 noise~; +#X obj 163 98 line~; +#X obj 106 152 *~; +#X obj 148 220 hsl 128 15 0 1 0 0 empty empty Volume_0-1 -2 -6 0 8 +-262144 -1 -1 0 1; +#X msg 163 70 1 \, 0 50; +#X obj 163 42 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1 +-1; +#X obj 106 188 lop~ 400; +#X floatatom 159 164 5 0 0 0 - - -; +#X obj 92 295 output~; +#X text 15 97 White noise; +#X text 170 188 Low-pass filter; +#X obj 121 7 metro 200; +#X obj 81 12 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 161 296 outlet~; +#X obj 222 7 r ds_s; +#X obj 106 247 *~ 10; +#X connect 0 0 2 0; +#X connect 1 0 2 1; +#X connect 2 0 6 0; +#X connect 3 0 15 1; +#X connect 4 0 1 0; +#X connect 5 0 4 0; +#X connect 6 0 15 0; +#X connect 7 0 6 1; +#X connect 11 0 5 0; +#X connect 12 0 11 0; +#X connect 14 0 5 0; +#X connect 15 0 8 0; +#X connect 15 0 8 1; +#X connect 15 0 13 0; +#X restore 11 58 pd drums-horrible-snare; +#X connect 0 0 14 0; +#X connect 17 0 14 0; +#X connect 20 0 14 0; +#X restore 118 166 pd version2; +#X text 119 276 KEY MAPPINGS!!! (FOR USE WITH THE CONWAY CONTROLLER) +; +#X text 120 304 Q \, W \, E \, R \, T \, Y - 6 strings of the guitar +respectively; +#X text 120 331 S & K - snare and kick; +#X text 84 67 Darius Smith; +#X obj 192 136 r hamilr4_control; +#X obj 118 110 r hamilr4_tempo; +#X obj 118 226 throw~ hamilr4_audio_1; +#X connect 0 0 7 0; +#X connect 5 0 0 1; +#X connect 6 0 0 0; diff --git a/conwayOSC/ConwayComposer.py b/conwayOSC/ConwayComposer.py new file mode 100644 index 0000000..55883ef --- /dev/null +++ b/conwayOSC/ConwayComposer.py @@ -0,0 +1,331 @@ +# Extension of game code by Nick Jarvis and Nick Wayne +# https://www.pygame.org/project-John+Conway's+Game+of+Life-2899-.html + +''' +Conway Composer by Darius Smith + +Uses Conway's Game of Life to send OSC messages to another program (PureData) +to generate music + +Required libraries + +pip3 install osc4py3, pygame + +================================================================================ + +Rules (from Conway's Game of Life) + +1) Any live cell with fewer than two live neighbours dies, as if by underpopulation. + +2) Any live cell with two or three live neighbours lives on to the next generation. + +3) Any live cell with more than three live neighbours dies, as if by overpopulation. + +4) Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction. + +================================================================================ + +TO PLAY (KEY MAPPINGS) + +LEFT CLICK >> mark a cell as 'alive' (blue) + +RIGHT CLICK >> mark a cell as 'dead' (black) + +- KEY >> clear grid + += KEY >> random grid + +a-z or A-Z >> assign a letter to the cell your mouse is over ( + +UP ARROW - progress time 1 frame + +SPACEBAR - starts and stops the progression of time (toggle) + +================================================================================ + +When a cell is "born" (transitions from dead to alive) if it contains a letter +it sends out an OSC message "/conway/" which can be used to trigger +sounds/events in another program (PureData) + +''' + +from math import ceil + +from osc4py3.as_eventloop import * +from osc4py3 import oscbuildparse + +from collections import OrderedDict +import pygame,random +from pygame.locals import * + +# Start the system. +osc_startup() + +# Make client channels to send packets. +osc_udp_client("127.0.0.1", 8000, "pureData") + + +pygame.init() + +''' ###### PARAMETERS ####### ''' + +speed = 10 # how many iterations per second +squares = 2 # size of squares: 0 = 8X8, 1 = 16X16, 2 = 32X32, 3 = 64X64 +map_size = 32 # the width and height + +''' ######################### ''' + +if squares == 0: + imgs = ["res/alive_8.png","res/dead_8.png",8] +if squares == 1: + imgs = ["res/alive_16.png","res/dead_16.png",16] +if squares == 2: + imgs = ["res/alive_32.png","res/dead_32.png",32] +if squares == 3: + imgs = ["res/alive_64.png","res/dead_64.png",64] + +#-----CONFIG----- + +width = map_size*imgs[2] +height = map_size*imgs[2] +screen_size = width,height +screen = pygame.display.set_mode(screen_size) +clock = pygame.time.Clock() +alive = pygame.image.load(imgs[0]).convert() +dead = pygame.image.load(imgs[1]).convert() +done = False + +marked_alive = [] +font = pygame.font.Font('freesansbold.ttf', 12) +white = (255, 255, 255) + +class cell: + + def __init__(self,location,alive = False): + self.to_be = None + self.alive = alive + self.pressed = False + self.location = location + self.osc = '' + self.text = font.render('', True, white) + +class board: + + def __init__(self): + self.map = [] + + def fill(self,ran): + for i in range(map_size): + self.map.append([]) + for g in range(map_size): + if ran == True: + a = random.randint(0,4) + if a == 0: self.map[i].insert(g,cell((i,g),True)) + else: self.map[i].insert(g,cell((i,g))) + else: self.map[i].insert(g,cell((i,g))) + + + def draw(self): + for i in range(map_size): + for g in range(map_size): + cell = self.map[i][g] + loc = cell.location + if cell.alive == True: + screen.blit(alive,(loc[0]*imgs[2],loc[1]*imgs[2])) + else: + screen.blit(dead,(loc[0]*imgs[2],loc[1]*imgs[2])) + + def get_cells(self,cell):# gets the cells around a cell + mapa = self.map + a = [] + b = [] + c = 0 + cell_loc = cell.location + try: a.append(mapa[abs(cell_loc[0]-1)][abs(cell_loc[1]-1)].location) + except Exception: pass + try: a.append(mapa[abs(cell_loc[0])][abs(cell_loc[1]-1)].location) + except Exception: pass + try: a.append(mapa[abs(cell_loc[0]+1)][abs(cell_loc[1]-1)].location) + except Exception: pass + try: a.append(mapa[abs(cell_loc[0]-1)][abs(cell_loc[1])].location) + except Exception: pass + try: a.append(mapa[abs(cell_loc[0]+1)][abs(cell_loc[1])].location) + except Exception: pass + try: a.append(mapa[abs(cell_loc[0]-1)][abs(cell_loc[1]+1)].location) + except Exception: pass + try: a.append(mapa[abs(cell_loc[0])][abs(cell_loc[1]+1)].location) + except Exception: pass + try: a.append(mapa[abs(cell_loc[0]+1)][abs(cell_loc[1]+1)].location) + except Exception: pass + num = len(list(OrderedDict.fromkeys(a)))# removes duplicates + for i in range(len(a)): b.append(mapa[a[i][0]][a[i][1]].alive) + for i in b:# c houses how many cells are alive around it + if i == True: c+=1 + if cell.alive == True: # rules + if c < 2: cell.to_be = False + if c > 3:cell.to_be = False + else: + if c == 3: cell.to_be = True + # rules + def update_frame(self): + for i in range(map_size): + for g in range(map_size): + cell = self.map[i][g] + self.get_cells(cell) + + def update(self): + for i in range(map_size): + for g in range(map_size): + cell = self.map[i][g] + loc = cell.location + if cell.to_be != None: cell.alive = cell.to_be + if self.map[i][g].alive == True: + screen.blit(alive,(loc[0]*imgs[2],loc[1]*imgs[2])) + + textRect = cell.text.get_rect() + textRect.center = (loc[0]*imgs[2] +ceil(imgs[2]/2),loc[1]*imgs[2]+ceil(imgs[2]/2)) + screen.blit(cell.text, textRect) + + if run and loc not in marked_alive: + # OSC + if cell.osc != '': + print(cell.osc) + # Build a message with autodetection of data types, and send it. + msg = oscbuildparse.OSCMessage("/conway", None, [cell.osc]) + osc_send(msg, "pureData") + osc_process() + marked_alive.append(loc) + else: + screen.blit(dead,(loc[0]*imgs[2],loc[1]*imgs[2])) + + textRect = cell.text.get_rect() + textRect.center = (loc[0]*imgs[2] +ceil(imgs[2]/2),loc[1]*imgs[2]+ceil(imgs[2]/2)) + screen.blit(cell.text, textRect) + + if loc in marked_alive: + marked_alive.remove(loc) + cell.to_be = None + +def cell_list(): + lst = [] + for i in range(map_size): + lst.append([]) + for g in range(map_size): lst[i].append((board.map[i][g].location[0]*imgs[2],board.map[i][g].location[1]*imgs[2])) + return lst + +############################################################################################# + +board = board() +board.fill(False) +board.draw() +tp = 0 +run = False + +shift = False + +while done == False: + milliseconds = clock.tick(60) + seconds = milliseconds / 1000.0 + tp += milliseconds + + for event in pygame.event.get(): + if event.type == QUIT: + osc_terminate() + done = True + + if event.type == KEYDOWN: + if event.key == K_SPACE: + run = not run + + elif event.key == K_MINUS: + board.map = [] + board.fill(False) + board.draw() + + elif event.key == K_EQUALS: + board.map = [] + board.fill(True) + board.draw() + + elif event.key == K_RSHIFT or event.key == K_LSHIFT: + shift = True + + elif event.key == K_BACKSPACE: + pos = pygame.mouse.get_pos() + rects = cell_list() + for i in range(map_size): + for g in range(map_size): + if pos[0] >= rects[i][g][0] and pos[0] < rects[i][g][0]+imgs[2] and pos[1] >= rects[i][g][1] and pos[1] < rects[i][g][1]+imgs[2]: + #print(i,g,key) + board.map[i][g].osc = '' + board.map[i][g].text = font.render('', True, white) + board.update() + + else: + key = pygame.key.name(event.key) + if shift: + key = key.upper() + if key.isalpha() and len(key) == 1: + pos = pygame.mouse.get_pos() + rects = cell_list() + for i in range(map_size): + for g in range(map_size): + if pos[0] >= rects[i][g][0] and pos[0] < rects[i][g][0]+imgs[2] and pos[1] >= rects[i][g][1] and pos[1] < rects[i][g][1]+imgs[2]: + #print(i,g,key) + board.map[i][g].osc = key + board.map[i][g].text = font.render(key, True, white) + board.update() + + if event.type == KEYUP: + if event.key == K_UP: + run = True + board.update_frame() + board.update() + run = False + elif event.key == K_RSHIFT or event.key == K_LSHIFT: + shift = False + + if event.type == MOUSEBUTTONUP: + for i in range(map_size): + for g in range(map_size): + board.map[i][g].pressed = False + + pressed = pygame.key.get_pressed() + mouse = pygame.mouse.get_pressed() + pos = pygame.mouse.get_pos() + + # if pressed[K_MINUS]: + # board.map = [] + # board.fill(False) + # board.draw() + # if pressed[K_EQUALS]: + # board.map = [] + # board.fill(True) + # board.draw() + + if run == True and tp >= 1000/speed : + tp = 0 + board.update_frame() + board.update() + + if mouse[0]:# makes cells alive + rects = cell_list() + for i in range(map_size): + for g in range(map_size): + if pos[0] >= rects[i][g][0] and pos[0] < rects[i][g][0]+imgs[2] and pos[1] >= rects[i][g][1] and pos[1] < rects[i][g][1]+imgs[2] and board.map[i][g].pressed == False: + board.map[i][g].alive = True + board.map[i][g].pressed = True + board.update() + + if mouse[2]: # kills cells + rects = cell_list() + for i in range(map_size): + for g in range(map_size): + if pos[0] >= rects[i][g][0] and pos[0] < rects[i][g][0]+imgs[2] and pos[1] >= rects[i][g][1] and pos[1] < rects[i][g][1]+imgs[2] and board.map[i][g].pressed == False: + board.map[i][g].alive = False + board.map[i][g].pressed = False + board.update() + + pygame.display.flip() + +pygame.quit() \ No newline at end of file diff --git a/conwayOSC/res/Thumbs.db b/conwayOSC/res/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..152443dc8dbda45f83146480c758ab52c1019468 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/conwayOSC/res/alive_64.png b/conwayOSC/res/alive_64.png new file mode 100644 index 0000000000000000000000000000000000000000..05e6feee678b02ef07bfe77773d738e39a3c4b31 GIT binary patch literal 1476 zcmV;#1v~nQP)00004XF*Lt006O% z3;baP00009a7bBm000ic000ic0Tn1pfB*mh8gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^7j^FlWO00lrvL_t(&L+zT^QsY<@Mfp1vEoYn50h?$H#zr{EmIKiJ*}G4W zgh*38HxJ{rY?v8 zrB?x+{VB{OIvv-CaUFA$6Q*DdU=QF7;NHR;qC7-(gxVeIcWC%%3Omo~Y5aQWY4((! zMy}E6!~u+3W;auYFjAO9SVPz&I3twq;Q6TdsNJJJMq`2&F-3d&R)8)Kjh|+(=`}i? zIKu8-9vF%b(}(55_Tk*4G)8%h>IC&E8Z)#4v;*wT84*a`{%HJkb2NPt-N){IP8h@( z<`~u(_89I2-V~J?YBMwfH0Nk9uoq%K#6d^`ls*>VFJ>}+x;Zra5f6jU9mh=az?i_C zz?#CI!kxhjPzg|*qp?6M#NHD7D;%tFxK0an4VHM0+@ja%;7Fl0&DDTa6kf-{t;guKN7f+?^+^| zZ+apUn8yMks!P;YXsN&h4j)C}>30Nl{5hs4SYXZq&fEAy5cxNg+@OY)K(d2y96qPzY>EAy5cx zNg+@OY{@?oNUvuKfi2lWKv%0IkgR9^rvlIWrQ8LKe@npl3;|9r%K^fESK#4e0rQQ3 zk*|QJkH#MhltPq6ppgi~>zQ{1xMk7jH9rgZystGTyfZXr@#*pd*`c#f1l(Al77OgB z1%7-iU=Dd#ZjO0hYs${hl)Y8*1KB~*lkxNY2~iP&<{IrpK=wAs_iPJ{{T*mB5 zC-6dgX*b-Bs`%W`sm-_}QkOM9BZp?lnxW8|Tcgv>(e&x%rNBhbVe9`^OjQzds9{NE!2zJAvG)yOU7@nIjaqU)XP+LByrDGof09g)#0eVx z-So#lvBMSW4tIDx5vYnl!{=5V_tHY?MoGI!kEY{t;wk!bn?!$`{-wY+)G=Ps|DV(kmMMRr-z!ltiFR0zK}+sz6%=4nppw9f<%vAU!vkM~0-L e|3&)FPy7OvASN+oCs5e{0000NS%G}c0*}aI z1_r)EAj~ML;ne^XlqzwJC<)F_D=AMbN@WO0%*-p%^K%VRC^ObG)iX47|LkNAR2Agu z;usQFYr337O;r;X8h)7@HZ*gzFpmZ3ea>0Pgg&ebxsLQ E0KZvAga7~l literal 0 HcmV?d00001 diff --git a/conwayOSC/res/dead_16.png b/conwayOSC/res/dead_16.png new file mode 100644 index 0000000000000000000000000000000000000000..18f029ce185326889705b998c3ec79c9f0b218af GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3Q$0gN_s>q|Kvfl< zE{-7<{%N2bPDNB8 zb~7$DE-^7j^FlWO00A#aL_t(YOYN4+azsEFMm<_W+@dLrOIbvyGN_36-_D`csALgU zT6TR_GjxCF@80-~d7i&lrfK^62aIR*IF5ba->-li$uJCyfOLL!UDq^CUDqFKknp)e zTHCe;<1;(yyr`-w&+{zHZf9XH2}MzqWl0(sjL%uH@h3@=Fbv-n2!cQe5k*lP$E2lc zx(K*6#>Y&$>$-1hIF93a9wyQ-Z36C&(=h@oOw)Wl3wtfgk`B^1%`V^urGRxWXJIb_ z+qR{Eb7;XYwBQgeI7AB$(Sk#?;E=xre3SW);KFb6E|9H)Z#3^%p#tMmO?=;{S002ovPDHLkV1ha!w5tFB literal 0 HcmV?d00001 diff --git a/conwayOSC/res/dead_64.png b/conwayOSC/res/dead_64.png new file mode 100644 index 0000000000000000000000000000000000000000..09950cfebb2cb249fdcf0fd3e3d2918f2867c220 GIT binary patch literal 822 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$mUKs7M+SzC{oH>NS%G}c0*}aI z1_r)^Ak4U9V)k30pj3%#L`iUdT1k0gQ7S_~VrE{6o}X)oLYc9ish**s`)4O}1_q{0 zo-U3d8P0EKMQ^@jAma8j^PT_;OOB(X9#>QO|NpC3|8+XSX?u9iNuS{3d*u|Ze@A4M-rVCDa z`~COZvfVpBY%Gm=e6~$u!)^zI3DK$o^JJEWmn@4|8z!H1FWu>Gr{cBOrBAM{=Bul% zC@GpUPhZ08Z_-AM)0;H9$}Jb@3ov*voqlR0((H9WUan7M_Muyo=PeXD|NQgK9J9H8 z_pkZfa(dfv&4F!F#p-~US`Vhr=XIJ`IK}X2g^gUVTfUKFwnFooJw4x7vXs=xhvbg~Q&+j?V=e9E3Sp9RN1wKL7B;}erUQeF{!Qs-~o|Io9i#RA()xQ=+xZqY$Rsh^ z9-P?V|9_3^6+@v8Ge$X42S28|pLdVwCNZf^=-`~;prn?-)H$PpQw6`kpZiSzWN+H* zJ8Wc$DhoKS&i%qPJ5Xd|LwSbq*IpKnQg?-_i@qEE0>v_P8#8{s=a`Zzxo_okXT3vD z^93^Yy!m(|wo|9&IS{PFHbG1^Hf~`6n0me;<)3D>Bfft+82t~1Rt>ozr{G^ oc5%GJa*jJJk%5!6C!dTrp73SW^1Xo_z%FVdQ&MBb@01>ES*Z=?k literal 0 HcmV?d00001 diff --git a/conwayOSC/res/dead_8.png b/conwayOSC/res/dead_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4051bb5b066fec5daf6d080d9d02c5c90d41c24a GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1SGw4HSYi^mUKs7M+SzC{oH>NS%G}c0*}aI z1_r)^Ak4U9V)k30pj3%#L`iUdT1k0gQ7S_~VrE{6o}X)oLYc9ish**s`)4O}pelDy z7sn8Z@U?x0d<_g7%$2hQI2Au|BtHHxzd?_!Jb%&N#!F{Hu6|v*n{(~Vx!j>=eVW`Y t#Lm2VXU|>ZTp>8oJwej!!7Y~~yla=3e`^vd(gYgG;OXk;vd$@?2>{q+KE?n5 literal 0 HcmV?d00001 diff --git a/hamilr4.pd b/hamilr4.pd index a94a3ca..6d77486 100755 --- a/hamilr4.pd +++ b/hamilr4.pd @@ -1866,15 +1866,15 @@ to "hamilr4_control"; #X connect 3 0 4 0; #X restore 207 313 pd more_structure; #X obj 1628 422 channel; -#X obj 519 599 catch~ monkey; -#X obj 518 562 throw~ monkey; -#X text 506 526 AUDIO DATA (~); -#X floatatom 286 532 5 0 0 0 - - -; -#X floatatom 287 628 5 0 0 0 - - -; -#X obj 285 562 send hippo; -#X obj 285 595 receive hippo; -#X text 337 526 CONTROL DATA; -#X obj 274 457 class_3; +#X obj 519 689 catch~ monkey; +#X obj 518 652 throw~ monkey; +#X text 506 616 AUDIO DATA (~); +#X floatatom 286 622 5 0 0 0 - - -; +#X floatatom 287 718 5 0 0 0 - - -; +#X obj 285 652 send hippo; +#X obj 285 685 receive hippo; +#X text 337 616 CONTROL DATA; +#X obj 274 567 class_3; #N canvas 0 23 960 1031 data_parsing 0; #X obj 259 124 textfile; #X obj 259 81 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 @@ -2715,6 +2715,13 @@ to "hamilr4_control"; #X restore 276 354 pd midi; #X text 342 353 More MIDI...; #X text 343 398 More Data...; +#N canvas 0 23 765 247 more_networking 0; +#X obj 153 115 conway; +#X text 143 75 Darius Smith's OSC "The Game Of Life" audio code; +#X text 223 109 To use \, launch the python Conway's Game of Life app +in the conwayOSC folder in the masheen folder; +#X restore 199 440 pd more_networking; +#X text 346 442 More Networking...; #X connect 6 0 46 0; #X connect 7 0 9 0; #X connect 8 0 12 0; diff --git a/masheen.pd b/masheen.pd index 4c2d8b5..1ea247b 100755 --- a/masheen.pd +++ b/masheen.pd @@ -40,7 +40,7 @@ #X connect 10 3 3 1; #X restore 1470 674 pd solo; #X obj 1528 641 recorder_controls; -#X obj -56 219 hamilr4; +#X obj -33 219 hamilr4; #N canvas 310 379 1610 654 masheen_global_tempo 0; #N canvas 686 101 479 747 tempo_sender 0; #X obj 89 687 s hamilr4_tempo; @@ -300,8 +300,8 @@ files).; #X text -88 31 [ARTS 2020] FALL 2020 "MASHEEN"; #X obj 1377 338 user_keysend nelsoc5; #X obj 1377 131 user_keysend hamilr4; -#X obj -48 471 nelsoc5; -#X obj -48 562 smelcg; +#X obj -33 481 nelsoc5; +#X obj -33 572 smelcg; #N canvas 0 23 1014 681 midi-examples 0; #X obj 326 248 list trim; #X msg 326 269 username midi key 1 61 37 0; @@ -364,10 +364,10 @@ are extracted.; #X connect 29 0 9 0; #X connect 30 0 3 0; #X restore 1237 673 pd midi-examples; -#X obj -10 197 tgl 15 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj 13 197 tgl 15 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 768 -1 cpu_meter; -#X text 13 196 Enable audio for this patch; +#X text 36 196 Enable audio for this patch; #X obj -54 132 s global_audioenabled; #X obj -54 106 tgl 15 0 global_audioenabled empty empty 17 7 0 10 -262144 -1 -1 0 1; @@ -503,7 +503,7 @@ are extracted.; #X obj 403 441 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 106 419 hsl 310 15 0 15 0 0 empty empty empty -2 -8 0 10 -262144 --1 -1 28840 1; +-1 -1 0 1; #X obj 417 486 outlet; #X obj 407 508 outlet; #X obj 397 526 outlet; @@ -580,48 +580,48 @@ are extracted.; #X connect 40 0 42 0; #X coords 0 -1 1 1 325 60 1 100 400; #X restore 358 -1 pd timer_counts; -#X obj -72 243 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 253 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -48 312 hw1/fallit; -#X obj -72 266 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -33 322 hw1/fallit; +#X obj -57 276 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 289 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 299 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 357 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 367 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 380 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 390 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 425 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 435 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 447 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 457 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 539 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 549 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 585 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 595 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 333 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 343 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 494 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 504 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -72 516 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 526 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; #X msg 1195 88 120; -#X obj -72 608 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 +#X obj -57 618 tgl 19 0 empty global_audioenabled empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj -48 608 hw1/thompj17; -#X obj -48 585 hw1/stansj; -#X obj -48 539 hw1/sabary; -#X obj -48 516 hw1/powerj7; -#X obj -48 494 hw1/olynia; -#X obj -48 448 hw1/mcneee; -#X obj -48 425 hw1/lockwa; -#X obj -49 402 hw1/lillij2; -#X obj -48 380 hw1/krantm; -#X obj -48 357 hw1/johnsa23; -#X obj -48 335 hw1/golubm; -#X obj -48 289 hw1/corres2; -#X obj -48 266 hw1/boller; -#X obj -48 243 hw1/bilgeh; +#X obj -33 618 hw1/thompj17; +#X obj -33 595 hw1/stansj; +#X obj -33 549 hw1/sabary; +#X obj -33 526 hw1/powerj7; +#X obj -33 504 hw1/olynia; +#X obj -33 458 hw1/mcneee; +#X obj -33 435 hw1/lockwa; +#X obj -34 412 hw1/lillij2; +#X obj -33 390 hw1/krantm; +#X obj -33 367 hw1/johnsa23; +#X obj -33 345 hw1/golubm; +#X obj -33 299 hw1/corres2; +#X obj -33 276 hw1/boller; +#X obj -33 253 hw1/bilgeh; #X connect 35 0 6 1; #X connect 39 0 38 0; #X connect 44 0 72 1;