From 125b3b029450a3915d2e2afff2e26cb81b366d69 Mon Sep 17 00:00:00 2001 From: Nihilazo Date: Sun, 19 Sep 2021 17:34:39 +0100 Subject: [PATCH] weird looper patch --- looper.pd | 623 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 623 insertions(+) create mode 100644 looper.pd diff --git a/looper.pd b/looper.pd new file mode 100644 index 0000000..0530bc5 --- /dev/null +++ b/looper.pd @@ -0,0 +1,623 @@ +#N canvas 74 87 1353 864 12; +#X floatatom 270 70 5 33 240 1 bpm - -; +#X obj 81 701 dac~; +#X obj 123 455 line~; +#X obj 123 486 tabread4~ loop; +#X obj 14 135 t b b; +#X obj 14 240 del, f 5; +#X obj 46 190 * 16; +#X text 25 89 play in a loop; +#X obj 53 249 r playback; +#X obj 14 80 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 14 277 spigot; +#X obj 14 27 r playback; +#X obj 14 52 sel 1; +#X obj 1262 76 r playback; +#X obj 1262 126 s grid; +#X obj 123 514 *~; +#X obj 237 443 r unmute; +#X obj 195 27 loadbang; +#X msg 195 53 1; +#X obj 195 77 s unmute; +#N canvas 2 570 633 444 setbpm 0; +#X text 4 30 1 beat in ms; +#X obj 93 29 expr (1/($f1/60))*1000; +#X obj 93 111 * 16; +#X text 127 112 4 bars \, in milliseconds; +#X text 147 137 in seconds; +#X obj 93 136 / 1000; +#X obj 93 231 *; +#X obj 125 211 samplerate~; +#X obj 93 161 t f b; +#X msg 125 290 resize \$1; +#X obj 125 315 s loop; +#X text 120 232 samples for 4 bars; +#X text 204 290 set buffer length; +#X obj 93 62 t f f; +#X obj 93 256 t f f; +#X obj 93 2 inlet; +#X obj 93 336 v buffer_length; +#X obj 125 87 v beat_length; +#X connect 1 0 13 0; +#X connect 2 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 14 0; +#X connect 7 0 6 1; +#X connect 8 0 6 0; +#X connect 8 1 7 0; +#X connect 9 0 10 0; +#X connect 13 0 2 0; +#X connect 13 1 17 0; +#X connect 14 0 16 0; +#X connect 14 1 9 0; +#X connect 15 0 1 0; +#X restore 270 96 pd setbpm; +#X obj 837 113 r rec; +#X text 190 7 init; +#X text 9 4 playback; +#N canvas 2 828 450 250 (subpatch) 0; +#X array loop 352800 float 2; +#X coords 0 1 352800 -1 200 140 1 0 0; +#X restore 619 29 graph; +#X text 674 182 grid keys:; +#X text 674 198 0 \, 0: record; +#X text 673 214 0 \, 1: playback on/off; +#X text 673 228 0 \, 2: trigger mute; +#X obj 997 70 grid; +#X msg 997 31 connect; +#X msg 270 47 120; +#X obj 950 31 r grid; +#X msg 1262 102 set 1 0 \$1; +#X obj 319 266 samplerate~; +#X obj 301 293 /; +#X obj 301 318 * 1000; +#X text 674 243 1 \, 8-11: stutter; +#X msg 508 30 \; loop const 0; +#N canvas 823 231 885 659 record 0; +#X obj 65 371 dac~; +#N canvas 1248 59 533 529 clicktrack 0; +#X obj 146 98 inlet; +#X obj 159 123 inlet; +#X obj 240 453 outlet~; +#X obj 240 362 osc~ 440; +#X obj 240 418 *~; +#X obj 99 398 line~; +#X obj 99 217 metro 500; +#X obj 201 237 f; +#X obj 201 262 + 1; +#X obj 201 287 mod 4; +#X msg 186 341 440; +#X msg 247 331 220; +#X msg 99 271 1 \, 0 200; +#X obj 201 312 sel 0; +#X msg 178 198 3; +#X obj 146 151 t f b; +#X connect 0 0 15 0; +#X connect 1 0 6 1; +#X connect 3 0 4 0; +#X connect 4 0 2 0; +#X connect 5 0 4 1; +#X connect 6 0 12 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 9 0 7 1; +#X connect 9 0 13 0; +#X connect 10 0 3 0; +#X connect 11 0 3 0; +#X connect 12 0 5 0; +#X connect 13 0 10 0; +#X connect 13 1 11 0; +#X connect 14 0 7 1; +#X connect 15 0 6 0; +#X connect 15 1 14 0; +#X restore 66 293 pd clicktrack; +#X f 15; +#X obj 217 466 tabwrite~ loop; +#X obj 218 349 adc~; +#X msg 261 321 start; +#X msg 66 161 1; +#X obj 98 239 del, f 6; +#X msg 98 264 0; +#X obj 66 186 t f b; +#X obj 134 215 * 20; +#X obj 261 346 t a b, f 8; +#X obj 261 205 del; +#X obj 300 185 * 4; +#X obj 261 133 t b b; +#X obj 409 353 * 4; +#X obj 314 382 del, f 14; +#X msg 314 442 stop; +#X text 417 383 wait 4 bars; +#X obj 293 288 s grid; +#X msg 293 260 lset 0 0 15; +#X msg 352 531 lset 0 0 2; +#X obj 352 565 s grid; +#X obj 300 209 t f f, f 16; +#X text 301 135 record for 4 bars after a bar's wait; +#X obj 261 230 t b b; +#X msg 391 488 \; loop normalize; +#X obj 421 180 s playback; +#X msg 421 156 0; +#X obj 102 108 t b b b, f 46; +#X obj 496 180 s unmute; +#X text 453 156 disable playback when rec starts; +#X obj 314 407 t b b b b, f 17; +#X obj 430 459 s unmute; +#X msg 430 432 1; +#X text 437 406 on recording end; +#X obj 102 82 inlet; +#X text 29 55 run click track for 5 bars; +#X text 143 85 recording; +#X obj 134 159 v beat_length; +#X obj 300 160 v beat_length; +#X obj 102 133 t b b; +#X obj 134 184 t f f; +#X connect 1 0 0 0; +#X connect 1 0 0 1; +#X connect 3 0 2 0; +#X connect 4 0 10 0; +#X connect 5 0 8 0; +#X connect 6 0 7 0; +#X connect 7 0 1 0; +#X connect 8 0 1 0; +#X connect 8 1 6 0; +#X connect 9 0 6 1; +#X connect 10 0 2 0; +#X connect 10 1 15 0; +#X connect 11 0 24 0; +#X connect 12 0 22 0; +#X connect 13 0 11 0; +#X connect 13 1 39 0; +#X connect 14 0 15 1; +#X connect 15 0 31 0; +#X connect 16 0 2 0; +#X connect 19 0 18 0; +#X connect 20 0 21 0; +#X connect 22 0 11 1; +#X connect 22 1 14 0; +#X connect 24 0 4 0; +#X connect 24 1 19 0; +#X connect 27 0 26 0; +#X connect 27 0 29 0; +#X connect 28 0 40 0; +#X connect 28 1 13 0; +#X connect 28 2 27 0; +#X connect 31 0 16 0; +#X connect 31 1 20 0; +#X connect 31 2 25 0; +#X connect 31 3 33 0; +#X connect 33 0 32 0; +#X connect 35 0 28 0; +#X connect 38 0 41 0; +#X connect 39 0 12 0; +#X connect 40 0 5 0; +#X connect 40 1 38 0; +#X connect 41 0 9 0; +#X connect 41 1 1 1; +#X restore 837 146 pd record; +#X msg 1055 31 disconnect; +#X text 352 320 time; +#X obj 55 135 v cut_length; +#X obj 14 111 t b b b, f 19; +#X obj 46 165 v beat_length; +#X obj 149 201 v buffer_length; +#X obj 123 376 pack f f f; +#X obj 154 226 t f f f b, f 24; +#X msg 123 423 \$1 \, \$2 \$3; +#X text 184 283 sample count; +#X obj 156 303 expr $f1*(cut_length/16)+(cut_start*($f1/16)), f 19 +; +#X obj 21 319 expr cut_start*($f1/16), f 18; +#X text 54 302 start sample; +#N canvas 2 55 1920 1023 cutter 0; +#X obj 37 37 inlet; +#X text 97 31 grid ui for sample cutting; +#X obj 320 35 loadbang; +#X obj 320 85 v pressed\$0; +#X msg 320 60 -1; +#X obj 90 235 t f b, f 6; +#X obj 90 319 spigot; +#X obj 129 259 v pressed\$0; +#X obj 129 285 == -1; +#X msg 237 322 -1; +#X obj 123 423 v pressed\$0; +#X floatatom 123 448 5 0 0 0 - - -; +#X obj 237 347 v pressed\$0; +#X obj 237 298 spigot; +#X obj 237 235 t b f, f 6; +#X obj 58 210 t f f; +#X obj 58 180 route 1, f 26; +#X msg 237 207 \$2; +#X obj 58 613 spigot; +#X obj 90 478 v cut_start; +#X obj 223 712 v cut_length; +#X obj 58 638 t f f, f 24; +#X obj 58 502 t f f, f 11; +#X obj 132 593 expr pressed\$0!=-1 && $f1>(cut_start-1); +#X msg 157 376 1; +#X obj 157 401 v cut_length; +#X obj 37 37; +#X obj 90 350 t f f f, f 10; +#X text 416 127 on the first button press \, sets the cut start \, +and sets the pressed\$0 variable so this state is saved. On the second +button press \, sets the loop end. the pressed\$0 variable is reset +\, allowing another gesture. The; +#X obj 223 672 expr ($f1+1)-cut_start; +#X obj 90 794 s grid; +#X obj 58 669 t f b; +#X obj 88 692 v cut_start; +#X obj 58 719 pack f f; +#X msg 90 770 row 0 7 0 \, row 8 7 0; +#X obj 106 904 until; +#X obj 106 929 f; +#X obj 106 954 + 1; +#X obj 106 979 - 1; +#X msg 106 1004 lset \$1 7 8; +#X obj 106 1029 s grid; +#X obj 58 744 t b b; +#X obj 58 824 t b b, f 14; +#X obj 153 909 v cut_start; +#X obj 58 855 v cut_length; +#X obj 276 271 expr pressed\$0==$f1; +#X obj 37 62 t a a; +#X text 77 75 cut; +#X obj 69 96 unpack f f f; +#X obj 58 156 spigot; +#X obj 120 136 == 7; +#X msg 37 125 \$1 \$2; +#X connect 0 0 46 0; +#X connect 2 0 4 0; +#X connect 4 0 3 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 6 0 27 0; +#X connect 7 0 8 0; +#X connect 8 0 6 1; +#X connect 9 0 12 0; +#X connect 10 0 11 0; +#X connect 13 0 9 0; +#X connect 14 0 13 0; +#X connect 14 1 45 0; +#X connect 15 0 22 0; +#X connect 15 1 5 0; +#X connect 16 0 15 0; +#X connect 16 1 17 0; +#X connect 17 0 14 0; +#X connect 18 0 21 0; +#X connect 21 0 31 0; +#X connect 21 1 29 0; +#X connect 22 0 18 0; +#X connect 22 1 23 0; +#X connect 23 0 18 1; +#X connect 24 0 25 0; +#X connect 27 0 19 0; +#X connect 27 1 10 0; +#X connect 27 2 24 0; +#X connect 29 0 20 0; +#X connect 31 0 33 0; +#X connect 31 1 32 0; +#X connect 32 0 33 1; +#X connect 33 0 41 0; +#X connect 34 0 30 0; +#X connect 35 0 36 0; +#X connect 36 0 37 0; +#X connect 37 0 38 0; +#X connect 37 0 36 1; +#X connect 38 0 39 0; +#X connect 39 0 40 0; +#X connect 41 0 42 0; +#X connect 41 1 34 0; +#X connect 42 0 44 0; +#X connect 42 1 43 0; +#X connect 43 0 36 1; +#X connect 44 0 35 0; +#X connect 45 0 13 1; +#X connect 46 0 51 0; +#X connect 46 1 48 0; +#X connect 48 2 50 0; +#X connect 49 0 16 0; +#X connect 50 0 49 1; +#X connect 51 0 49 0; +#X restore 1035 197 pd cutter; +#X text 284 467 mute has a little slew \, to stop unmuting being totally +clicky; +#X obj 237 495 line~; +#X msg 237 468 \$1 5; +#X obj 301 356 expr $f1*(cut_length/16)*speed; +#X obj 46 215 expr $f1*speed; +#X msg 277 134 connect \, all 0 \, set 10 2 1, f 27; +#X obj 277 159 s grid; +#X text 351 26 init variables; +#X obj 139 78 v speed; +#X obj 122 563 rev2~ 100, f 11; +#X obj 259 584 loadbang; +#X msg 259 609 0; +#X obj 997 99 t a a a a a a, f 14; +#X obj 159 528 r reverb_length; +#X obj 162 594 r reverb_mix; +#N canvas 572 59 1026 1039 stutter 0; +#X obj 49 36 inlet; +#X obj 81 284 metro; +#X obj 81 312 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 81 332 s unmute; +#X obj 49 216 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 15 272 sel 0; +#X obj 15 322 s unmute; +#X msg 15 298 1; +#X obj 130 264 / 2; +#X obj 49 236 t f f; +#X obj 144 193 unpack f f f; +#X obj 184 219 - 7; +#X obj 184 244 << 2; +#X obj 88 216 v beat_length; +#X obj 49 58 t a a; +#X obj 81 86 unpack f f f; +#X obj 49 138 spigot; +#N canvas 671 369 830 679 is-stutter 0; +#X obj 12 35 inlet; +#X obj 261 41 inlet; +#X obj 12 93 outlet; +#X obj 12 68 expr $f1 > 7 && $f1 < 12 && $f2 == 1; +#X connect 0 0 3 0; +#X connect 1 0 3 1; +#X connect 3 0 2 0; +#X restore 74 109 pd is-stutter; +#X text 251 167 stutter; +#X msg 239 190 set \$2 \$3 \$1; +#X obj 239 215 s grid; +#X obj 48 168 t f b a a, f 20; +#X connect 0 0 14 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 4 0 9 0; +#X connect 5 0 7 0; +#X connect 7 0 6 0; +#X connect 8 0 1 1; +#X connect 9 0 5 0; +#X connect 9 1 1 0; +#X connect 10 1 11 0; +#X connect 11 0 12 0; +#X connect 12 0 8 1; +#X connect 13 0 8 0; +#X connect 14 0 16 0; +#X connect 14 1 15 0; +#X connect 15 1 17 0; +#X connect 15 2 17 1; +#X connect 16 0 21 0; +#X connect 17 0 16 1; +#X connect 19 0 20 0; +#X connect 21 0 4 0; +#X connect 21 1 13 0; +#X connect 21 2 10 0; +#X connect 21 3 19 0; +#X restore 997 244 pd stutter; +#N canvas 526 59 1363 969 toggles 0; +#X obj 75 142 t a a; +#X obj 107 169 unpack f f f; +#X obj 75 235 spigot; +#X msg 75 260 \$2; +#X text 115 257 x value; +#X obj 107 195 == 1; +#X obj 188 195 == 0; +#X obj 150 215 &&; +#X text 126 145 top row \, toggles; +#X obj 75 426 s rec; +#X obj 99 403 s playback; +#X obj 124 363 s unmute; +#X obj 99 381 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 75 290 route 0 1 2; +#X obj 124 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 191 427 s grid; +#X msg 191 402 set 2 0 \$1; +#X obj 124 340 t f f, f 10; +#X obj 191 375 == 0; +#X obj 75 116 inlet; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 5 0; +#X connect 1 2 6 0; +#X connect 2 0 3 0; +#X connect 3 0 13 0; +#X connect 5 0 7 0; +#X connect 6 0 7 1; +#X connect 7 0 2 1; +#X connect 12 0 10 0; +#X connect 13 0 9 0; +#X connect 13 1 12 0; +#X connect 13 2 14 0; +#X connect 14 0 17 0; +#X connect 16 0 15 0; +#X connect 17 0 11 0; +#X connect 17 1 18 0; +#X connect 18 0 16 0; +#X connect 19 0 0 0; +#X restore 1016 220 pd toggles; +#N canvas 603 185 1227 870 speedcontrol 0; +#X obj 115 57 t a a; +#X obj 147 87 unpack f f f; +#X msg 56 128 \$2; +#X obj 56 177 spigot; +#X obj 56 208 t f f; +#X obj 88 269 s grid; +#X obj 140 127 expr $f2 > 7 && $f1 == 1 && $f3 == 2, f 14; +#X msg 88 240 row 7 2 0 0 \, set \$1 2 1; +#X obj 56 342 + 1; +#X floatatom 56 367 5 0 0 0 - - -; +#X obj 56 291 - 10; +#X obj 56 317 * 0.25; +#X obj 56 391 v speed; +#X obj 115 32 inlet; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 6 0; +#X connect 1 1 6 1; +#X connect 1 2 6 2; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 10 0; +#X connect 4 1 7 0; +#X connect 6 0 3 1; +#X connect 7 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 12 0; +#X connect 10 0 11 0; +#X connect 11 0 8 0; +#X connect 13 0 0 0; +#X restore 1054 173 pd speedcontrol; +#N canvas 281 59 1237 980 reverbmixcontrol 0; +#X obj 75 51 t a a; +#X obj 107 81 unpack f f f; +#X msg 16 122 \$2; +#X obj 16 171 spigot; +#X obj 16 204 t f f; +#X obj 48 263 s grid; +#X text 135 17 reverb mix; +#X obj 100 121 expr $f2 > 7 && $f1 == 1 && $f3 == 3, f 14; +#X msg 48 234 row 7 3 0 0 \, set \$1 3 1; +#X floatatom 16 319 5 0 0 0 - - -; +#X obj 16 294 expr (($f1-8)/8)+0.125; +#X obj 16 357 s reverb_mix; +#X obj 75 13 inlet; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 7 0; +#X connect 1 1 7 1; +#X connect 1 2 7 2; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 10 0; +#X connect 4 1 8 0; +#X connect 7 0 3 1; +#X connect 8 0 5 0; +#X connect 9 0 11 0; +#X connect 10 0 9 0; +#X connect 12 0 0 0; +#X restore 1073 148 pd reverbmixcontrol; +#N canvas 576 59 1238 645 reverblengthcontrol 0; +#X obj 80 45 t a a; +#X obj 112 75 unpack f f f; +#X msg 21 116 \$2; +#X obj 21 165 spigot; +#X obj 21 199 t f f; +#X obj 53 258 s grid; +#X floatatom 21 315 5 0 0 0 - - -; +#X text 134 43 reverb length; +#X msg 53 229 row 7 4 0 0 \, set \$1 4 1; +#X obj 105 115 expr $f2 > 7 && $f1 == 1 && $f3 == 4, f 14; +#X obj 21 341 s reverb_length; +#X obj 21 290 expr (($f1-8)*7)+50; +#X obj 80 8 inlet; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 9 0; +#X connect 1 1 9 1; +#X connect 1 2 9 2; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 11 0; +#X connect 4 1 8 0; +#X connect 6 0 10 0; +#X connect 8 0 5 0; +#X connect 9 0 3 1; +#X connect 11 0 6 0; +#X connect 12 0 0 0; +#X restore 1092 125 pd reverblengthcontrol; +#X text 444 268 TODO tidy up playback \, add more things!; +#X text 147 174 [expr] for length?; +#X text 991 7 grid I/O; +#N canvas 1180 206 450 300 crossfade 0; +#X obj 30 73 inlet~; +#X obj 83 74 inlet~; +#X obj 136 74 inlet; +#X obj 31 152 *~; +#X obj 82 127 *~; +#X obj 136 107 t f f; +#X text 13 22 crossfade between signal 1 and 2 \, by the amount in +the third inlet (0-1); +#X obj 168 133 expr 1-$f1; +#X obj 31 193 +~; +#X obj 31 218 outlet~; +#X floatatom 170 185 5 0 0 0 - - -; +#X connect 0 0 3 0; +#X connect 1 0 4 0; +#X connect 2 0 5 0; +#X connect 3 0 8 0; +#X connect 4 0 8 1; +#X connect 5 0 4 1; +#X connect 5 1 7 0; +#X connect 7 0 10 0; +#X connect 7 0 3 1; +#X connect 8 0 9 0; +#X restore 81 629 pd crossfade; +#X msg 350 48 \; cut_length 16 \; cut_start 0 \; loop const 0 \; pd +dsp 1; +#X connect 0 0 20 0; +#X connect 2 0 3 0; +#X connect 3 0 15 0; +#X connect 4 0 5 0; +#X connect 4 1 44 0; +#X connect 5 0 10 0; +#X connect 6 0 58 0; +#X connect 8 0 10 1; +#X connect 9 0 43 0; +#X connect 10 0 9 0; +#X connect 11 0 12 0; +#X connect 12 0 9 0; +#X connect 13 0 33 0; +#X connect 15 0 63 0; +#X connect 15 0 77 0; +#X connect 16 0 56 0; +#X connect 17 0 18 0; +#X connect 17 0 31 0; +#X connect 17 0 78 0; +#X connect 17 0 59 0; +#X connect 18 0 19 0; +#X connect 18 0 62 0; +#X connect 21 0 39 0; +#X connect 29 0 66 0; +#X connect 30 0 29 0; +#X connect 31 0 0 0; +#X connect 32 0 29 0; +#X connect 33 0 14 0; +#X connect 34 0 35 1; +#X connect 35 0 36 0; +#X connect 36 0 57 0; +#X connect 40 0 29 0; +#X connect 42 0 6 1; +#X connect 43 0 4 0; +#X connect 43 1 42 0; +#X connect 43 2 45 0; +#X connect 44 0 6 0; +#X connect 45 0 47 0; +#X connect 46 0 48 0; +#X connect 47 0 51 0; +#X connect 47 1 50 0; +#X connect 47 2 35 0; +#X connect 47 3 34 0; +#X connect 48 0 2 0; +#X connect 50 0 46 1; +#X connect 51 0 46 0; +#X connect 55 0 15 1; +#X connect 56 0 55 0; +#X connect 57 0 46 2; +#X connect 58 0 5 1; +#X connect 59 0 60 0; +#X connect 63 0 77 1; +#X connect 64 0 65 0; +#X connect 65 0 77 2; +#X connect 66 0 69 0; +#X connect 66 1 70 0; +#X connect 66 2 53 0; +#X connect 66 3 71 0; +#X connect 66 4 72 0; +#X connect 66 5 73 0; +#X connect 67 0 63 2; +#X connect 68 0 77 2; +#X connect 77 0 1 0; +#X connect 77 0 1 1;