(
~bjorklund = {
arg steps,numBeats;
var beat = Array(steps);
var remainder = steps-numBeats;
var remaindersToPop = numBeats;
//initialize array
steps.do{|i| if (i < numBeats) { beat.add([1]); } {beat.add([0]); }};
//transform the array
while ({ remainder > 0 } , {
remaindersToPop = min(remaindersToPop,remainder);
remaindersToPop.do { |i| beat[i] = [beat[i],beat.pop].flatten; };
remainder = beat.size - remaindersToPop;
});
beat.flatten;
};
)