Hi, here is a working example of the proportional canon patch.<br>Now I have the following question: if I want to make this patch an abstraction, and use more instances of it, how to avoid duplications of the same &quot;send&quot;, coll, etc?
<br><br>I read the subpatch tutorial, but the mechanism is not really clear.<br><br>Thanks for any help.<br><br>Libero<br><br>#N canvas 55 22 1371 812 10;<br>#X obj 704 569 cnv 15 160 40 empty empty empty 20 12 0 14 -204352 -66577
<br>0;<br>#X obj -76 20 cnv 15 160 40 empty empty empty 20 12 0 14 -204352 -66577<br>0;<br>#X obj 123 19 cnv 15 160 40 empty empty empty 20 12 0 14 -204352 -66577<br>0;<br>#X obj -49 113 makenote 100 100;<br>#X msg -49 61 60;
<br>#X obj 628 217 timer;<br>#X obj 628 122 i 0;<br>#X obj 664 122 + 1;<br>#X msg 643 96 0;<br>#X obj 498 169 prepend set;<br>#X msg 498 202 184.308;<br>#X obj 628 154 sel 0;<br>#X obj 138 95 s counterreset;<br>#X msg 138 67 0;
<br>#X obj -38 88 s notes;<br>#X obj 628 19 r notes;<br>#X obj 643 69 r counterreset;<br>#X obj 628 43 t b;<br>#X obj 655 182 t b b;<br>#X text 701 175 restart the counter on the first note and show the<br>other time differences.;
<br>#X text 734 93 restart counter when canon is played from the beginning.<br>;<br>#X obj 628 257 t b f;<br>#X obj 628 339 i 0;<br>#X obj 664 339 + 1;<br>#X msg 643 313 0;<br>#X obj 643 286 r counterreset;<br>#X text 668 256 bang triggers index values \, float the durations.
<br>;<br>#X text 695 337 generates index values.;<br>#X obj 628 370 pack 0 1 0;<br>#X text 696 369 index \, event \, time diff.;<br>#X obj 640 398 r counterreset;<br>#X msg 640 425 clear;<br>#X obj 628 523 coll -------;<br>
#C restore;<br>#X obj 38 337 i 0;<br>#X obj 74 337 + 1;<br>#X msg 53 311 0;<br>#X obj 38 234 r notes;<br>#X obj 53 284 r counterreset;<br>#X obj 38 258 t b;<br>#X obj 628 555 unpack f f;<br>#X text 699 554 separate events and time diffs.;
<br>#X obj 38 369 sel 9;<br>#X text 727 608 change the time diffs with a fixed proportion.;<br>#X obj 38 533 i 0;<br>#X obj 74 533 + 1;<br>#X msg 53 507 0;<br>#X obj 53 483 r counterreset;<br>#X obj 38 461 t b;<br>#X obj 628 641 pipe;
<br>#X text 80 364 trigger the first value in the coll \, after the 10th<br>note has been played.;<br>#X obj 665 737 + 1;<br>#X obj 644 691 r counterreset;<br>#X msg 644 714 1;<br>#X obj 629 737 i 1;<br>#X obj 38 567 s playcoll0;
<br>#X obj 649 453 r playcoll0;<br>#X obj 629 767 s playcoll1toinf;<br>#X text 121 564 when the 10th note has been played \, play the first<br>note only!;<br>#X text 701 729 play from the second note.;<br>#X obj 654 488 r playcoll1toinf;
<br>#X obj 628 671 t b;<br>#X obj -49 142 noteout 1;<br>#X obj 469 746 makenote 100 100;<br>#X obj 469 775 noteout 1;<br>#X msg 469 718 80;<br>#X obj 685 608 * 1.5;<br>#X msg 712 577 1;<br>#X msg 743 577 2;<br>#X msg 776 577 
0.5;<br>#X text -74 31 1) play at least 10 notes;<br>#X text 125 32 2) before restart \, reset!;<br>#X text 807 577 3) try different speed.;<br>#X connect 3 0 61 0;<br>#X connect 3 1 61 1;<br>#X connect 4 0 3 0;<br>#X connect 4 0 14 0;
<br>#X connect 5 0 9 0;<br>#X connect 5 0 21 0;<br>#X connect 6 0 7 0;<br>#X connect 6 0 11 0;<br>#X connect 7 0 6 1;<br>#X connect 8 0 6 1;<br>#X connect 9 0 10 0;<br>#X connect 11 0 5 0;<br>#X connect 11 0 5 1;<br>#X connect 11 1 18 0;
<br>#X connect 13 0 12 0;<br>#X connect 15 0 17 0;<br>#X connect 16 0 8 0;<br>#X connect 17 0 6 0;<br>#X connect 18 0 5 0;<br>#X connect 18 1 5 1;<br>#X connect 21 0 22 0;<br>#X connect 21 1 28 2;<br>#X connect 22 0 23 0;
<br>#X connect 22 0 28 0;<br>#X connect 23 0 22 1;<br>#X connect 24 0 22 1;<br>#X connect 25 0 24 0;<br>#X connect 28 0 32 0;<br>#X connect 30 0 31 0;<br>#X connect 31 0 32 0;<br>#X connect 32 0 39 0;<br>#X connect 33 0 34 0;
<br>#X connect 33 0 41 0;<br>#X connect 34 0 33 1;<br>#X connect 35 0 33 1;<br>#X connect 36 0 38 0;<br>#X connect 37 0 35 0;<br>#X connect 38 0 33 0;<br>#X connect 39 0 48 0;<br>#X connect 39 1 65 0;<br>#X connect 41 0 47 0;
<br>#X connect 43 0 44 0;<br>#X connect 43 0 54 0;<br>#X connect 44 0 43 1;<br>#X connect 45 0 43 1;<br>#X connect 46 0 45 0;<br>#X connect 47 0 43 0;<br>#X connect 48 0 60 0;<br>#X connect 50 0 53 1;<br>#X connect 51 0 52 0;
<br>#X connect 52 0 53 1;<br>#X connect 53 0 50 0;<br>#X connect 53 0 56 0;<br>#X connect 55 0 32 0;<br>#X connect 59 0 32 0;<br>#X connect 60 0 53 0;<br>#X connect 60 0 64 0;<br>#X connect 62 0 63 0;<br>#X connect 62 1 63 1;
<br>#X connect 64 0 62 0;<br>#X connect 65 0 48 1;<br>#X connect 66 0 65 1;<br>#X connect 67 0 65 1;<br>#X connect 68 0 65 1;<br><br>