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"