aboutsummaryrefslogtreecommitdiff
path: root/s-midiloop.pd
diff options
context:
space:
mode:
Diffstat (limited to 's-midiloop.pd')
-rw-r--r--s-midiloop.pd163
1 files changed, 163 insertions, 0 deletions
diff --git a/s-midiloop.pd b/s-midiloop.pd
new file mode 100644
index 0000000..2b253aa
--- /dev/null
+++ b/s-midiloop.pd
@@ -0,0 +1,163 @@
+#N canvas 7 17 986 667 10;
+#X obj 490 632 outlet;
+#X text 540 635 Midi pairs come out here.;
+#X obj 490 544 t l l;
+#X obj 520 567 unpack f f;
+#X obj 62 21 tgl 14 0 \$0/passthrough \$1/passthrough passthrough 17
+7 0 8 -260818 -1 -1 0 1;
+#X obj 520 610 s \$0/num1;
+#X obj 585 589 s \$0/num2;
+#X floatatom 4 42 3 0 0 0 - #0/num1 -;
+#X floatatom 32 42 3 0 0 0 - #0/num2 -;
+#X text 156 0 args: name timername length [midichannel];
+#X obj 6 77 notein \$4;
+#X obj 574 4 r \$2;
+#X text 78 77 Midi notes come in here;
+#X text 609 3 Listen for timer ticks;
+#X obj 604 48 mod \$3;
+#X text 657 49 Loop at the right length;
+#X obj 6 106 pack f f;
+#X obj 6 246 t l l;
+#X text 695 100 Get the time since the last timer tick;
+#X obj 574 126 timer;
+#X obj 36 464 list prepend;
+#X obj 115 437 pack f f;
+#X obj 604 70 s \$0/tick;
+#X obj 166 415 r \$0/subtime;
+#X obj 574 150 s \$0/subtime;
+#X obj 604 100 r \$0/gettime;
+#X obj 94 316 s \$0/gettime;
+#X obj 115 414 f;
+#X obj 131 392 r \$0/tick;
+#X obj 574 25 t b f;
+#X obj 36 510 list prepend;
+#X obj 132 511 t l;
+#X obj 36 269 spigot;
+#X obj 73 247 r \$0/record;
+#X obj 129 464 r \$0/record;
+#X text 108 368 Data stored is: tick - tick offset - note - volume
+;
+#X text 214 464 Reset the data if we hit record;
+#X obj 129 485 sel 1;
+#X obj 36 533 s \$0/data;
+#X obj 36 293 t l b b b;
+#X obj 94 342 s \$0/resettime;
+#X obj 463 69 r \$0/resettime;
+#X obj 513 247 r \$0/data;
+#X obj 490 269 list;
+#X text 527 270 Data lives here;
+#X obj 490 339 list append;
+#X obj 490 291 t b l;
+#X obj 490 363 list split 4;
+#X obj 490 390 unpack f f f f;
+#X obj 490 421 ==;
+#X obj 490 222 t b f;
+#X obj 490 468 delay;
+#X obj 552 468 pack f f;
+#X obj 490 500 list;
+#X text 489 183 Replay our list;
+#X obj 490 443 sel 1 0;
+#X obj 490 202 r \$0/tick;
+#X obj 162 511 s \$0/reset;
+#X obj 708 214 r \$0/reset;
+#X obj 708 235 t b b;
+#X obj 761 235 r \$0/data;
+#X obj 738 258 list;
+#X obj 738 280 t b l;
+#X obj 738 302 until;
+#X obj 738 327 list append;
+#X obj 738 349 list split 4;
+#X obj 738 372 unpack f f f f;
+#X text 771 259 Zero every note we know about;
+#X obj 800 393 pack f 0;
+#X obj 43 129 r \$0/record;
+#X obj 51 152 r \$0/passthrough;
+#X obj 43 203 ||;
+#X obj 6 224 spigot;
+#X obj 4 21 tgl 14 0 \$0/record \$1/record record 17 7 0 8 -260818
+-1 -1 0 1;
+#X obj 6 570 s \$0/passnotes;
+#X obj 380 500 r \$0/passnotes;
+#X obj 51 173 t b f;
+#X obj 828 349 bang;
+#X text 220 131 sssad persistence;
+#X obj 221 147 sssad/auto \$0/data \$1/data;
+#X obj 719 165 s-connect \$1/data \$0/data;
+#X text 717 147 User can send in data;
+#X connect 2 0 0 0;
+#X connect 2 1 3 0;
+#X connect 3 0 5 0;
+#X connect 3 1 6 0;
+#X connect 10 0 16 0;
+#X connect 10 1 16 1;
+#X connect 11 0 29 0;
+#X connect 14 0 22 0;
+#X connect 16 0 72 0;
+#X connect 17 0 74 0;
+#X connect 17 1 32 0;
+#X connect 19 0 24 0;
+#X connect 20 0 30 0;
+#X connect 21 0 20 1;
+#X connect 23 0 21 1;
+#X connect 25 0 19 1;
+#X connect 27 0 21 0;
+#X connect 28 0 27 1;
+#X connect 29 0 19 0;
+#X connect 29 1 14 0;
+#X connect 30 0 31 0;
+#X connect 30 0 38 0;
+#X connect 31 0 30 1;
+#X connect 32 0 39 0;
+#X connect 33 0 32 1;
+#X connect 34 0 37 0;
+#X connect 37 0 30 1;
+#X connect 37 0 57 0;
+#X connect 39 0 20 0;
+#X connect 39 1 27 0;
+#X connect 39 2 40 0;
+#X connect 39 3 26 0;
+#X connect 41 0 19 0;
+#X connect 42 0 43 1;
+#X connect 43 0 46 0;
+#X connect 45 0 47 0;
+#X connect 46 0 45 0;
+#X connect 46 1 45 1;
+#X connect 47 0 48 0;
+#X connect 47 1 45 1;
+#X connect 48 0 49 0;
+#X connect 48 1 51 1;
+#X connect 48 2 52 0;
+#X connect 48 3 52 1;
+#X connect 49 0 55 0;
+#X connect 50 0 43 0;
+#X connect 50 1 49 1;
+#X connect 51 0 53 0;
+#X connect 52 0 53 1;
+#X connect 53 0 2 0;
+#X connect 55 0 51 0;
+#X connect 55 1 45 0;
+#X connect 56 0 50 0;
+#X connect 58 0 59 0;
+#X connect 59 0 43 1;
+#X connect 59 0 61 1;
+#X connect 59 1 61 0;
+#X connect 60 0 61 1;
+#X connect 61 0 62 0;
+#X connect 62 0 63 0;
+#X connect 62 1 64 1;
+#X connect 63 0 64 0;
+#X connect 64 0 65 0;
+#X connect 65 0 66 0;
+#X connect 65 1 64 1;
+#X connect 65 2 77 0;
+#X connect 66 2 68 0;
+#X connect 68 0 2 0;
+#X connect 69 0 71 0;
+#X connect 70 0 76 0;
+#X connect 71 0 72 1;
+#X connect 72 0 17 0;
+#X connect 75 0 2 0;
+#X connect 76 0 71 0;
+#X connect 76 1 71 1;
+#X connect 77 0 63 1;
+#X coords 0 -1 1 1 150 60 1 0 0;