commit 3dddb62f6134a5e2938fb7c4e9b7f811cb99f5f8 Author: Nihilazo Date: Tue Aug 24 22:08:50 2021 +0100 life basics work diff --git a/4ths-keyboard-refactor.pd b/4ths-keyboard-refactor.pd new file mode 100644 index 0000000..e3c8dfd --- /dev/null +++ b/4ths-keyboard-refactor.pd @@ -0,0 +1,107 @@ +#N canvas 471 109 1051 855 12; +#X obj 142 173 grid; +#X msg 65 153 connect; +#X obj 49 325 pack f f f; +#X msg 49 350 set \$1 \$2 \$3; +#X obj 68 417 s grid; +#X obj 142 115 r grid; +#X obj 49 288 r x; +#X obj 82 288 r y; +#X obj 116 287 r s; +#X obj 115 224 s x; +#X obj 154 225 s y; +#X obj 176 256 r x; +#X obj 194 291 r y; +#X obj 182 225 s s; +#X text 257 252 when a key is pressed \, get the column \, subtract +7 and abs (so that the columns run bottom-top) \, multiply by 5 (to +create stacked 4ths) and add 40 (for a root note of E like a bass). +Then add the x position to that as a semitone.; +#X obj 705 310 until; +#X obj 705 367 f; +#X obj 705 392 + 1; +#X obj 729 418 div 16; +#X obj 705 287 t f b; +#X msg 51 185 all 0; +#X msg 749 310 -1; +#X obj 659 419 mod 16; +#X obj 729 529 + 40; +#X obj 711 559 +; +#X obj 729 496 * 5; +#X obj 729 470 abs; +#X obj 729 445 - 7; +#X obj 721 662 mod 12; +#X obj 721 687 == 0; +#X obj 682 723 spigot; +#X obj 642 663 list; +#X obj 682 773 s grid; +#X obj 36 448 s draw-scale; +#X msg 682 748 lset \$1 \$2 2; +#X obj 36 387 t b a; +#X msg 705 263 127; +#X text 222 96 keyboard on the grid using the 4th string layout (like +a bass guitar). TODO: sort out C-lighting mess.; +#X obj 705 211 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#N canvas 2 639 450 250 (subpatch) 0; +#X array mapping 128 float 3; +#A 0 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 70 71 72 73 74 75 +76 77 78 79 80 81 82 83 84 85 65 66 67 68 69 70 71 72 73 74 75 76 77 +78 79 80 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 55 56 57 58 +59 60 61 62 63 64 65 66 67 68 69 70 50 51 52 53 54 55 56 57 58 59 60 +61 62 63 64 65 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 40 41 +42 43 44 45 46 47 48 49 50 51 52 53 54 55 0; +#X coords 0 40 128 80 200 140 1 0 0; +#X restore 665 32 graph; +#X obj 711 591 tabwrite mapping; +#X obj 196 378 +; +#X obj 196 451 tabread mapping; +#X obj 196 546 noteout; +#X obj 219 488 r s; +#X obj 219 513 * 127; +#X obj 196 353 * 15; +#X obj 244 417 print; +#X connect 0 0 9 0; +#X connect 0 1 10 0; +#X connect 0 2 13 0; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 3 0 35 0; +#X connect 5 0 0 0; +#X connect 6 0 2 0; +#X connect 7 0 2 1; +#X connect 8 0 2 2; +#X connect 11 0 41 1; +#X connect 12 0 46 0; +#X connect 15 0 16 0; +#X connect 16 0 17 0; +#X connect 17 0 16 1; +#X connect 17 0 18 0; +#X connect 17 0 22 0; +#X connect 17 0 40 1; +#X connect 18 0 27 0; +#X connect 19 0 15 0; +#X connect 19 1 21 0; +#X connect 20 0 0 0; +#X connect 21 0 16 0; +#X connect 22 0 24 0; +#X connect 23 0 24 1; +#X connect 24 0 40 0; +#X connect 25 0 23 0; +#X connect 26 0 25 0; +#X connect 27 0 26 0; +#X connect 28 0 29 0; +#X connect 29 0 30 1; +#X connect 30 0 34 0; +#X connect 31 0 30 0; +#X connect 34 0 32 0; +#X connect 35 0 33 0; +#X connect 35 1 4 0; +#X connect 36 0 19 0; +#X connect 38 0 36 0; +#X connect 41 0 42 0; +#X connect 41 0 47 0; +#X connect 42 0 43 0; +#X connect 44 0 45 0; +#X connect 45 0 43 1; +#X connect 46 0 41 0; diff --git a/euclid.pd b/euclid.pd new file mode 100644 index 0000000..dbc5c2b --- /dev/null +++ b/euclid.pd @@ -0,0 +1,35 @@ +#N canvas 633 203 1182 757 12; +#X obj 49 267 select 1; +#X obj 49 202 % \$3; +#X text 111 266 <-- bang out on each hit. (Silent on rest.); +#X obj 49 169 * \$1; +#X obj 49 235 < \$1; +#X obj 96 182 r \$0-length; +#X obj 96 150 r \$0-hits; +#X obj 49 85 f; +#X obj 49 107 + 1; +#X obj 49 132 mod; +#X obj 94 112 r \$0-length; +#X obj 96 215 r \$0-hits; +#X obj 49 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1 +; +#X floatatom 193 39 5 0 0 0 - - -; +#X obj 193 62 s \$0-length; +#X floatatom 277 39 5 0 0 0 - - -; +#X obj 277 62 s \$0-hits; +#X obj 49 54 metro 200; +#X connect 1 0 4 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X connect 5 0 1 1; +#X connect 6 0 3 1; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 9 0 3 0; +#X connect 9 0 7 1; +#X connect 10 0 9 1; +#X connect 11 0 4 1; +#X connect 12 0 17 0; +#X connect 13 0 14 0; +#X connect 15 0 16 0; +#X connect 17 0 7 0; diff --git a/life.pd b/life.pd new file mode 100644 index 0000000..ed8f0e8 --- /dev/null +++ b/life.pd @@ -0,0 +1,229 @@ +#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; diff --git a/sequencer_livepatch.pd b/sequencer_livepatch.pd new file mode 100644 index 0000000..0aac070 --- /dev/null +++ b/sequencer_livepatch.pd @@ -0,0 +1,165 @@ +#N canvas 643 177 954 820 12; +#X obj 181 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1 +; +#X obj 268 76 mod 16; +#X obj 211 76 f; +#X obj 238 76 + 1; +#X obj 181 27 metro 200; +#N canvas 1468 59 450 250 (subpatch) 0; +#X array pattern 16 float 3; +#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; +#X coords 0 1 16 0 200 20 1 0 0; +#X restore 576 38 graph; +#X obj 195 473 spigot; +#X floatatom 195 498 5 0 0 0 - - -; +#X obj 86 766 tabwrite pattern; +#X obj 64 517 tabread pattern; +#X obj 64 542 - 1; +#X obj 64 567 abs; +#X obj 110 622 list; +#X obj 488 96 tabread pattern; +#X obj 449 147 spigot; +#X obj 435 432 dac~; +#X obj 307 47 value cut; +#X obj 368 586 value cut; +#X msg 368 641 set \$1 2 0; +#X obj 225 562 value cut; +#X obj 336 518 t f b; +#X msg 284 602 set \$1 2 1; +#X obj 225 538 + 1; +#X obj 368 615 - 1; +#X obj 577 65 hsl 200 15 1 16 0 0 empty empty empty -2 -8 0 10 -4034 +-1 -1 19900 1; +#X obj 488 33 value cut; +#X text 787 63 cut pos; +#X msg 743 294 connect; +#X msg 804 294 disconnect; +#X obj 732 234 r grid; +#X obj 306 353 r s; +#X obj 267 387 spigot; +#X obj 267 353 r x; +#X obj 256 425 r y; +#X obj 256 453 == 1; +#X obj 284 681 s grid; +#X obj 268 222 s grid; +#X obj 336 489 spigot; +#X obj 375 436 r y; +#X obj 375 462 == 2; +#X obj 179 118 s metro; +#X obj 488 9 r metro; +#X obj 449 114 r metro; +#X msg 110 655 set \$1 1 \$2; +#X obj 110 687 s grid; +#X text 105 353 sequencing controls; +#X text 726 214 grid i/o; +#X text 50 26 counter/timing; +#X text 471 181 sound synthesis; +#X text 205 8 start/stop; +#N canvas 830 120 773 708 kick 0; +#X obj 160 338 outlet~; +#X obj 132 219 osc~ 100; +#X obj 160 306 *~; +#X obj 198 251 line~; +#X obj 132 187 line; +#X msg 198 219 0 200; +#X obj 168 64 inlet; +#X text 295 111 amp env; +#X text 153 116 pitch env; +#X obj 6 38 vsl 15 128 20 400 1 0 empty empty pitch 0 -9 0 10 -4034 +-1 -1 5800 1; +#X msg 73 156 20 200; +#X msg 132 155 set \$1; +#X obj 109 117 t b f; +#X floatatom 5 171 5 0 0 0 - - -; +#X obj 234 117 t b b; +#X msg 251 219 1; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 3 0 2 1; +#X connect 4 0 1 0; +#X connect 5 0 3 0; +#X connect 6 0 9 0; +#X connect 6 0 14 0; +#X connect 9 0 12 0; +#X connect 9 0 13 0; +#X connect 10 0 4 0; +#X connect 11 0 4 0; +#X connect 12 0 10 0; +#X connect 12 1 11 0; +#X connect 14 0 5 0; +#X connect 14 1 15 0; +#X connect 15 0 3 0; +#X coords 0 -1 1 1 85 200 1 0 0; +#X restore 449 210 pd kick; +#X obj 627 538 loadbang; +#X text 626 514 reset pattern; +#X msg 732 405 \$2 \$3 \$1; +#X obj 732 374 grid; +#X obj 732 434 unpack f f f; +#X obj 732 467 s x; +#X obj 772 467 s y; +#X obj 813 467 s s; +#X obj 268 122 makenote 1 200; +#X obj 268 168 pack f f; +#X msg 268 194 set \$1 0 \$2; +#X msg 627 589 \; pattern const 0; +#X obj 587 545 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X connect 0 0 4 0; +#X connect 1 0 13 0; +#X connect 1 0 2 1; +#X connect 1 0 59 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 4 0 2 0; +#X connect 4 0 40 0; +#X connect 4 0 16 0; +#X connect 6 0 7 0; +#X connect 7 0 8 1; +#X connect 7 0 9 0; +#X connect 7 0 12 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 8 0; +#X connect 11 0 12 1; +#X connect 12 0 43 0; +#X connect 13 0 14 1; +#X connect 14 0 50 0; +#X connect 16 0 1 1; +#X connect 17 0 23 0; +#X connect 18 0 35 0; +#X connect 20 0 22 0; +#X connect 20 0 21 0; +#X connect 20 1 17 0; +#X connect 21 0 35 0; +#X connect 22 0 19 0; +#X connect 23 0 18 0; +#X connect 25 0 24 0; +#X connect 27 0 54 0; +#X connect 28 0 54 0; +#X connect 29 0 54 0; +#X connect 30 0 31 1; +#X connect 31 0 6 0; +#X connect 31 0 37 0; +#X connect 32 0 31 0; +#X connect 33 0 34 0; +#X connect 34 0 6 1; +#X connect 37 0 20 0; +#X connect 38 0 39 0; +#X connect 39 0 37 1; +#X connect 41 0 25 0; +#X connect 42 0 14 0; +#X connect 43 0 44 0; +#X connect 50 0 15 0; +#X connect 50 0 15 1; +#X connect 51 0 62 0; +#X connect 53 0 55 0; +#X connect 54 0 53 0; +#X connect 55 0 56 0; +#X connect 55 1 57 0; +#X connect 55 2 58 0; +#X connect 59 0 60 0; +#X connect 59 1 60 1; +#X connect 60 0 61 0; +#X connect 61 0 36 0; +#X connect 63 0 62 0; diff --git a/test.pd b/test.pd new file mode 100644 index 0000000..65b8b96 --- /dev/null +++ b/test.pd @@ -0,0 +1,9 @@ +#N canvas 526 59 450 300 12; +#X obj 165 129 grid; +#X msg 143 90 set monome grid led set; +#X obj 146 179 pack f f f; +#X connect 0 0 2 0; +#X connect 0 1 2 1; +#X connect 0 2 2 2; +#X connect 1 0 0 0; +#X connect 2 0 0 0;