-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbop.rhythm.pd
480 lines (480 loc) · 13.4 KB
/
bop.rhythm.pd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
91
92
93
94
95
96
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
#N canvas 146 201 1199 773 10;
#X obj 100 120 cnv 15 210 20 empty empty empty 7 7 0 14 #bca8fc #fcfcfc
0;
#X obj 1200 100 inlet~ left;
#X obj 1300 100 inlet~ right;
#X obj 1420 100 inlet note;
#X obj 1680 100 inlet ctl;
#X obj 1200 300 outlet~ left;
#X obj 1300 300 outlet~ right;
#X obj 1420 300 outlet note;
#X obj 1680 300 outlet ctl;
#X obj 720 70 r save-state-\$0;
#X obj 786 388 s save-state-\$0;
#X obj 160 130 tgl 15 1 \$0-from-loop \$0-to-loop loop 20 5 0 10 #fcfcfc
#000000 #000000 1 1;
#X obj 110 130 tgl 15 1 \$0-from-play \$0-to-play play 20 5 0 10 #fcfcfc
#000000 #000000 1 1;
#X obj 720 360 savestate, f 11;
#X text 810 360 👈 bangs when parent is saved;
#X obj 720 210 f;
#X obj 720 490 t b l;
#X obj 720 700 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000;
#X obj 110 60 cnv 15 210 20 empty empty bop.rhythm 7 7 0 14 #bca8fc
#fcfcfc 0;
#X text 2980 1740 comment;
#X text 2762 1862 comment;
#X obj 210 130 hsl 85 15 0 5.9 0 1 \$0-from-units \$0-to-units unit:12ths(2)
6 6 0 10 #fcfcfc #bca8fc #000000 3700 1;
#N canvas 18 115 720 580 tick-calculator 0;
#X msg 310 250 1 6 8 12 24 96, f 18;
#X obj 460 390 *, f 8;
#X obj 470 130 t b f;
#X obj 78 78 inlet;
#X obj 460 60 inlet;
#X obj 50 470 outlet;
#X obj 460 490 outlet;
#X obj 50 420 symbol;
#X msg 130 240 ticks 16ths 12ths 8ths beats bars, f 18;
#X obj 250 290 list store, f 21;
#X msg 250 250 get \$1 1;
#X obj 250 200 t f b, f 21;
#X obj 50 290 list store, f 21;
#X msg 50 250 get \$1 1;
#X obj 50 200 t f b, f 21;
#X obj 80 140 t f f;
#X obj 78 108 int;
#X obj 460 440 int;
#X obj 470 90 int;
#X connect 0 0 9 1;
#X connect 1 0 17 0;
#X connect 2 0 1 0;
#X connect 2 1 1 1;
#X connect 3 0 16 0;
#X connect 4 0 18 0;
#X connect 7 0 5 0;
#X connect 8 0 12 1;
#X connect 9 0 1 0;
#X connect 10 0 9 0;
#X connect 11 0 10 0;
#X connect 11 1 0 0;
#X connect 12 0 7 0;
#X connect 13 0 12 0;
#X connect 14 0 13 0;
#X connect 14 1 8 0;
#X connect 15 0 14 0;
#X connect 15 1 11 0;
#X connect 16 0 15 0;
#X connect 17 0 6 0;
#X connect 18 0 2 0;
#X restore 150 1470 pd tick-calculator;
#X obj 100 1410 t f f, f 8;
#X obj 1380 881 i;
#X obj 1380 910 %;
#X obj 1380 850 route ticks;
#X obj 1380 940 /, f 7;
#X obj 1380 810 spigot;
#X obj 100 1540 pack f s;
#X obj 100 1500 int;
#X msg 100 1580 label unit:\$2(\$1);
#X obj 110 150 hsl 185 15 1 24 0 1 \$0-from-duration \$0-to-duration
duration:24 6 6 0 10 #fcfcfc #bca8fc #000000 18400 1;
#X obj 360 1410 int;
#X msg 360 1500 label duration:\$1;
#X obj 370 350 s \$0-to-toggles;
#X obj 110 170 sub.bop.rhythm.toggle \$0 1;
#X obj 142 170 sub.bop.rhythm.toggle \$0 2;
#X obj 174 170 sub.bop.rhythm.toggle \$0 3;
#X obj 206 170 sub.bop.rhythm.toggle \$0 4;
#X obj 238 170 sub.bop.rhythm.toggle \$0 5;
#X obj 270 170 sub.bop.rhythm.toggle \$0 6;
#X obj 110 202 sub.bop.rhythm.toggle \$0 7;
#X obj 142 202 sub.bop.rhythm.toggle \$0 8;
#X obj 174 202 sub.bop.rhythm.toggle \$0 9;
#X obj 206 202 sub.bop.rhythm.toggle \$0 10;
#X obj 238 202 sub.bop.rhythm.toggle \$0 11;
#X obj 270 202 sub.bop.rhythm.toggle \$0 12;
#X obj 110 234 sub.bop.rhythm.toggle \$0 13;
#X obj 142 234 sub.bop.rhythm.toggle \$0 14;
#X obj 174 234 sub.bop.rhythm.toggle \$0 15;
#X obj 206 234 sub.bop.rhythm.toggle \$0 16;
#X obj 238 234 sub.bop.rhythm.toggle \$0 17;
#X obj 270 234 sub.bop.rhythm.toggle \$0 18;
#X obj 110 266 sub.bop.rhythm.toggle \$0 19;
#X obj 142 266 sub.bop.rhythm.toggle \$0 20;
#X obj 174 266 sub.bop.rhythm.toggle \$0 21;
#X obj 206 266 sub.bop.rhythm.toggle \$0 22;
#X obj 238 266 sub.bop.rhythm.toggle \$0 23;
#X obj 270 266 sub.bop.rhythm.toggle \$0 24;
#X obj 100 400 r \$0-from-toggle;
#X msg 370 290 3 blink;
#X obj 470 290 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000
#000000 0 1;
#X msg 470 320 2 set \$1;
#X obj 370 580 tabwrite \$0-rhythm;
#X obj 370 520 swap;
#X obj 370 490 unpack;
#X obj 460 550 - 1;
#X obj 260 1070 array set \$0-rhythm;
#X obj 100 1030 array get \$0-rhythm;
#X obj 100 990 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000;
#X text 260 1090 set list to array;
#X obj 100 1100 iter;
#X obj 130 1170 f, f 11;
#X obj 160 1130 + 1;
#X obj 100 1060 t l 1, f 16;
#X obj 100 1280 s \$0-to-toggles;
#X obj 100 1130 t f b;
#X obj 100 1220 pack f f;
#X text 160 1220 value \, index;
#X msg 100 1250 \$2 set \$1;
#X obj 100 520 array get \$0-rhythm;
#X obj 100 490 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000;
#X text 120 490 get array as list;
#X text 120 990 set toggles from array;
#X obj 100 1370 r \$0-from-units;
#X obj 100 1610 s \$0-to-units;
#X obj 210 1440 r \$0-from-duration;
#X obj 210 1500 s \$0-duration-ticks;
#X obj 360 1380 r \$0-from-duration;
#X obj 360 1540 s \$0-to-duration;
#X obj 1419 878 r \$0-duration-ticks;
#X obj 1410 780 r \$0-from-play;
#X obj 1590 1205 tabread \$0-rhythm;
#X obj 740 100 r \$0-from-duration;
#X obj 770 130 r \$0-from-units;
#X obj 790 160 r \$0-from-loop;
#X obj 810 190 r \$0-from-play;
#X obj 800 580 s \$0-to-play;
#X obj 780 610 s \$0-to-loop;
#X obj 760 640 s \$0-to-units;
#X obj 740 670 s \$0-to-duration;
#X obj 720 720 s \$0-to-units;
#X obj 1700 240 s \$0-to-duration;
#X obj 1790 210 s \$0-to-units;
#X obj 1700 140 route duration units loop play, f 58;
#X obj 1870 190 s \$0-to-loop;
#X obj 1950 170 s \$0-to-play;
#X obj 720 260 pack f f f f s, f 20;
#X obj 100 430 t b l, f 46;
#X obj 100 550 tosymbol;
#X obj 100 580 s \$0-from-rhythm-symbol;
#X obj 840 220 r \$0-from-rhythm-symbol;
#X obj 740 520 unpack f f f f s;
#X obj 830 550 s \$0-to-rhythm-symbol;
#X obj 260 1030 fromsymbol;
#X obj 100 650 r \$0-to-rhythm-symbol;
#X text 100 630 receives rhythm as symbol from save state;
#X text 100 600 sets array list as symbol for save state;
#X text 370 600 store rhythm in array;
#X obj 1140 1250 int;
#X obj 1170 1150 r \$0-from-duration;
#X obj 1530 1345 + 1;
#X obj 1530 1405 s \$0-to-toggles;
#X msg 1530 1375 \$1 blink;
#X obj 1140 870 route ticks;
#X msg 1710 1235 1;
#X obj 1590 1245 select 1;
#X obj 1710 1205 select 0;
#X obj 1625 1295 + 1;
#X obj 1140 1300 change;
#X obj 1760 1400 s \$0-raw-hit;
#X obj 1140 940 f;
#X obj 1175 940 + 1;
#X obj 1140 900 bang;
#X obj 1142 821 spigot;
#X obj 1180 750 r \$0-from-play;
#X obj 1180 780 t f f;
#X obj 1230 820 select 1;
#X obj 1140 1100 /, f 7;
#N canvas 536 235 450 301 looping 0;
#X obj 160 203 + 1;
#X obj 80 300 t b 0 b;
#X obj 390 218 i;
#X obj 390 189 spigot;
#X obj 390 276 change;
#X obj 390 305 sel 0;
#X obj 390 247 %;
#X text 350 80 ⏰ RETRIGGER OFF OF TICKS % DURATION👇;
#X text 168 133 Stop if not looping 👇;
#X obj 160 170 r from-loop-\$0;
#X obj 242 202 r endbang-\$0;
#X obj 80 402 s to-seq-\$0;
#X obj 458 159 r from-loop-\$0;
#X obj 429 215 r duration-ticks-\$0;
#X obj 390 334 s start-\$0;
#X obj 350 160 route ticks;
#X obj 350 130 r bop-time;
#X msg 242 355 start -1;
#X obj 242 389 s to-seq-\$0;
#X msg 80 368 goto 0;
#X obj 90 340 s to-play-\$0;
#X text 40 495 todo: fix looping behaviour;
#X text 40 520 if looping longer than duration of the clip \, playback
should pause until loop length comes around, f 33;
#X obj 160 240 cyclone/gate 2;
#X connect 0 0 23 0;
#X connect 1 0 19 0;
#X connect 1 1 20 0;
#X connect 2 0 6 0;
#X connect 3 0 2 0;
#X connect 4 0 5 0;
#X connect 5 0 14 0;
#X connect 6 0 4 0;
#X connect 9 0 0 0;
#X connect 10 0 23 1;
#X connect 12 0 3 1;
#X connect 13 0 6 1;
#X connect 15 0 3 0;
#X connect 16 0 15 0;
#X connect 17 0 18 0;
#X connect 19 0 11 0;
#X connect 23 0 1 0;
#X connect 23 1 17 0;
#X restore 1200 1100 pd looping reference;
#X obj 1179 1018 r \$0-duration-ticks;
#X msg 1230 910 0;
#X obj 1170 1370 >= 1;
#X obj 1170 1480 s \$0-to-play;
#X obj 1170 1400 select 1;
#X obj 1140 1210 * 24;
#X obj 1140 1510 s \$0-step;
#X obj 1140 1340 t f f;
#X obj 1530 1090 r \$0-step;
#X obj 1170 1180 int;
#X obj 1190 1270 r \$0-from-duration;
#X obj 1190 1300 int;
#X obj 1400 1340 s \$0-to-play;
#X msg 1400 1290 1;
#X obj 1190 1330 - 1;
#X obj 1380 1070 int;
#X obj 1410 970 r \$0-from-duration;
#X obj 1380 1120 change;
#X obj 1380 1030 * 24;
#X obj 1380 1170 s \$0-step;
#X obj 1410 1000 int;
#X obj 1269 556 r \$0-from-loop;
#X msg 1170 1450 0;
#X obj 1196 477 r bop-time;
#X obj 1269 586 + 1;
#X text 1390 750 looping (continuous);
#X text 1010 720 play once;
#X obj 960 820 r \$0-from-loop;
#X obj 960 940 s \$0-to-play;
#X obj 1540 140 r \$0-raw-hit;
#X obj 1700 260 r \$0-to-outlet-ctrl;
#X obj 1540 240 s \$0-to-outlet-ctrl;
#X msg 1540 210 note \$1;
#X msg 130 840 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, f
12;
#X msg 230 840 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, f
12;
#X obj 100 810 t s b b, f 22;
#X obj 130 910 tosymbol;
#X text 320 860 reinit array;
#X obj 720 470 list;
#X obj 720 390 t b l;
#X obj 720 430 delay 100;
#X text 780 430 initialisation wasn't working without this delay -
the toggle subpathes didn't have their args yet, f 31;
#X obj 1590 1295 f 1;
#X obj 1430 1050 loadbang;
#X msg 1430 1080 -1;
#X obj 1070 1210 loadbang;
#X msg 1070 1240 -1;
#X obj 430 1020 s \$0-to-duration;
#X obj 430 980 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
#000000 #000000;
#X obj 100 950 t b s b, f 56;
#X obj 100 760 symbol, f 11;
#X obj 100 730 delay 300;
#X obj 100 700 t b s, f 11;
#X obj 1760 1360 pack f f;
#X obj 1530 1125 t f f f f, f 47;
#X text 1860 1400 note number \, cell index;
#X obj 1540 170 unpack f f;
#X msg 1610 210 cell \$1;
#X obj 1800 1280 + 1;
#X obj 354 139 table \$0-rhythm 24;
#X obj 1199 556 route;
#X obj 1220 510 r \$0-scope-id;
#X obj 481 184 r \$0-scope-id;
#X obj 483 220 print rhythm scope-id;
#X obj 1200 670 route 0 1 2;
#X obj 1200 615 list prepend;
#X obj 1200 640 list trim;
#X obj 960 20 loadbang;
#X obj 960 110 s \$0-scope-id;
#X obj 960 50 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000
#000000;
#X obj 960 80 iemguts/canvasdollarzero 1;
#X text 985 49 get \$0 of parent patch to localise messaging;
#X connect 1 0 5 0;
#X connect 2 0 6 0;
#X connect 3 0 7 0;
#X connect 4 0 8 0;
#X connect 4 0 105 0;
#X connect 9 0 15 0;
#X connect 13 0 180 0;
#X connect 13 1 10 0;
#X connect 15 0 108 0;
#X connect 16 0 17 0;
#X connect 16 1 113 0;
#X connect 17 0 102 0;
#X connect 22 0 29 1;
#X connect 22 1 88 0;
#X connect 23 0 30 0;
#X connect 23 1 22 0;
#X connect 24 0 25 0;
#X connect 25 0 27 0;
#X connect 26 0 24 0;
#X connect 27 0 159 0;
#X connect 28 0 26 0;
#X connect 29 0 31 0;
#X connect 30 0 29 0;
#X connect 31 0 86 0;
#X connect 33 0 34 0;
#X connect 34 0 90 0;
#X connect 60 0 109 0;
#X connect 61 0 35 0;
#X connect 62 0 63 0;
#X connect 63 0 35 0;
#X connect 65 0 64 0;
#X connect 65 1 67 0;
#X connect 66 0 65 0;
#X connect 66 1 65 1;
#X connect 67 0 64 1;
#X connect 69 0 75 0;
#X connect 70 0 69 0;
#X connect 72 0 77 0;
#X connect 73 0 74 0;
#X connect 73 0 78 1;
#X connect 74 0 73 1;
#X connect 75 0 72 0;
#X connect 75 1 73 1;
#X connect 77 0 78 0;
#X connect 77 1 73 0;
#X connect 78 0 80 0;
#X connect 80 0 76 0;
#X connect 81 0 110 0;
#X connect 82 0 81 0;
#X connect 85 0 23 0;
#X connect 87 0 22 1;
#X connect 89 0 33 0;
#X connect 91 0 25 1;
#X connect 91 0 27 1;
#X connect 92 0 28 1;
#X connect 93 0 127 0;
#X connect 94 0 15 1;
#X connect 95 0 108 1;
#X connect 96 0 108 2;
#X connect 97 0 108 3;
#X connect 105 0 103 0;
#X connect 105 1 104 0;
#X connect 105 2 106 0;
#X connect 105 3 107 0;
#X connect 108 0 13 0;
#X connect 109 0 82 0;
#X connect 109 1 66 0;
#X connect 110 0 111 0;
#X connect 112 0 108 4;
#X connect 113 0 101 0;
#X connect 113 1 100 0;
#X connect 113 2 99 0;
#X connect 113 3 98 0;
#X connect 113 4 114 0;
#X connect 115 0 68 0;
#X connect 116 0 193 0;
#X connect 120 0 130 0;
#X connect 121 0 150 0;
#X connect 122 0 124 0;
#X connect 124 0 123 0;
#X connect 125 0 134 0;
#X connect 126 0 183 1;
#X connect 127 0 183 0;
#X connect 128 0 126 0;
#X connect 129 0 183 1;
#X connect 130 0 148 0;
#X connect 132 0 133 0;
#X connect 132 0 139 0;
#X connect 133 0 132 1;
#X connect 134 0 132 0;
#X connect 135 0 125 0;
#X connect 136 0 137 0;
#X connect 137 0 135 1;
#X connect 137 1 138 0;
#X connect 138 0 142 0;
#X connect 139 0 146 0;
#X connect 141 0 139 1;
#X connect 142 0 132 1;
#X connect 143 0 145 0;
#X connect 145 0 163 0;
#X connect 146 0 120 0;
#X connect 148 0 147 0;
#X connect 148 1 143 0;
#X connect 149 0 195 0;
#X connect 150 0 146 1;
#X connect 151 0 152 0;
#X connect 152 0 155 0;
#X connect 154 0 153 0;
#X connect 155 0 143 1;
#X connect 156 0 158 0;
#X connect 157 0 161 0;
#X connect 158 0 160 0;
#X connect 159 0 156 0;
#X connect 161 0 159 1;
#X connect 162 0 165 0;
#X connect 163 0 144 0;
#X connect 164 0 201 0;
#X connect 165 0 206 1;
#X connect 168 0 169 0;
#X connect 170 0 197 0;
#X connect 171 0 8 0;
#X connect 173 0 172 0;
#X connect 174 0 177 0;
#X connect 175 0 177 0;
#X connect 176 0 190 0;
#X connect 176 1 174 0;
#X connect 176 2 175 0;
#X connect 177 0 190 0;
#X connect 179 0 16 0;
#X connect 180 0 181 0;
#X connect 180 1 179 1;
#X connect 181 0 179 0;
#X connect 183 0 129 0;
#X connect 183 0 194 0;
#X connect 184 0 185 0;
#X connect 185 0 158 0;
#X connect 186 0 187 0;
#X connect 187 0 130 0;
#X connect 189 0 188 0;
#X connect 190 0 70 0;
#X connect 190 1 115 0;
#X connect 190 2 189 0;
#X connect 191 0 176 0;
#X connect 192 0 191 0;
#X connect 193 0 192 0;
#X connect 193 1 191 1;
#X connect 194 0 131 0;
#X connect 195 0 122 0;
#X connect 195 1 93 0;
#X connect 195 2 128 0;
#X connect 195 3 199 0;
#X connect 197 0 173 0;
#X connect 197 1 198 0;
#X connect 198 0 172 0;
#X connect 199 0 194 1;
#X connect 201 0 206 0;
#X connect 202 0 201 1;
#X connect 203 0 204 0;
#X connect 205 1 135 0;
#X connect 205 2 28 0;
#X connect 206 0 207 0;
#X connect 207 0 205 0;
#X connect 208 0 210 0;
#X connect 210 0 211 0;
#X connect 211 0 209 0;
#X coords 0 -1 1 1 210 210 1 100 100;