I'm stealing/playing around with ideas from the tidal language here.
Tidal is more focussed on creating loop based music and manipulating samples. It has a good (although initially scary looking) DSL for this purpose.
every 6 (density 2) $ jux (iter 8) $ every 8 rev $
every 5 (0.25 <~) $ sound "[808a/4*16, 808a/2 [808a/3 ~ ~ 808b] [~ 808b/3 808b/3 ~] [~], [~ ~ ~ [~ 808b/2]]/2]"
|+| speed "[1 1 1 [1.5 0.8] 1 1 1 [1 0.5]]/8"
|+| cutoff ((*0.5) <$> slow 2 sinewave1)
|+| resonance ((*0.2) <$> slow 3 sinewave1)
You can hear what that sounds like here: http://365tidalpatterns.tumblr.com/post/72553318354/pattern-012
It would be nice to develop some of the ideas from tidal into a Sonic-Pi core method at some point. I have a feeling that with Ruby datastructures alone you can achieve quite a fine grained manipulation of sample slicing.
The striate
method helps to slice a sample into a given number of pieces, then play those back in a given order (using array indices).
Enough explanation - play around with the code!