«Re: sloth canons [Pattern Extension]» by tom.dugovic
on 24 Apr'22 04:21 inSave this as an extension and recompile class library. You can now use Psloth([0,1,0], 10)
, for example, instead of declaring a new routine for each pattern.
I didn't persist the use cases, as this should be saved as a .sc
file. Please refer to the ancestor code for usage.
Memory/CPU usage will grow over time, but at a decreasing rate. This can be used for a large amount of repeats. Extensive testing has not been done on this though.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Psloth { var seed, repeats; *new { arg seed, repeats=1; ^super.newCopyArgs(seed, repeats); } storeArgs{^[seed, repeats]} embedInStream { arg inval; var size=seed.size; var pointers=List[]; repeats.value(inval).do({ arg j; j = j+1; if(j == j.nextPowerOf(size),{ pointers.add(0); }); pointers.collect{|i| seed.at(i)}.sum.embedInStream(inval); pointers.do{|x, i| if((i==0) || (pointers[0..(i-1)].sum==0), {pointers[i] = ((x+1)%size);}) }; }); ^inval } }
reception
this is rad!