life basics work

This commit is contained in:
Nico 2021-08-24 22:08:50 +01:00
commit 3dddb62f61
5 changed files with 545 additions and 0 deletions

107
4ths-keyboard-refactor.pd Normal file
View File

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

35
euclid.pd Normal file
View File

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

229
life.pd Normal file
View File

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

165
sequencer_livepatch.pd Normal file
View File

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

9
test.pd Normal file
View File

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