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