Ok I just stayed up a bit too late looking into this.. I was working on a fix that was getting very long and complicated, when suddenly this very short and simple solution came to me:
ply :: Pattern Time -> Pattern a -> Pattern a
ply = tParam _ply
where _ply n pat = squeezeJoin $ (_fast n . pure) <$> pat
In these moments I realise that Haskell is a pretty neat language..
edit Note that this new version accepts fractional ply factors.. going to have to sleep now but ply 1.5
would likely be cool..