(repeating a fixed order with repetitions) cannot be done easily. If such is case there is always the possibility to write your own Pattern classes. This is not as straight as writing wrappers for existing Patterns, but it isn't so hard either. An intro by James can be found here: So actually this new Pattern class would be very similar to Pshuf. Let's look at Pshuf's source: Pshuf : ListPattern { embedInStream { arg inval; var item, stream; var localList = list.copy.scramble; repeats.value(inval).do({ arg j; localList.size.do({ arg i; item = localList.wrapAt(i); inval = item.embedInStream(inval); }); }); ^inval; } } Instead of looping the scrambled list we want to loop a list of elements, which have been chosen from the given list. So only one line of code needs to be changed: var localList = { list.choose } ! (list.size); Let's call it Prandc (c for constant) Prandc : ListPattern { embedInStream { arg inval; var item, stream; var localList = { list.choose } ! (list.size); repeats.value(inval).do({ arg j; localList.size.do({ arg i; item = localList.wrapAt(i); inval = item.embedInStream(inval); }); }); ^inval; } } // and the wrapper + ArrayedCollection { prandc {|repeats=inf| ^Prandc(this, repeats); } } After recompile: Pbindef(\a, \note, (0..7).prandc(2).repeat, \dur, 0.15).play Regards Daniel |