( ~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; }; )