Is there a way to have a hierarchy of cycles?

For instance:

In every m//nth cycle, I want d1 $ f_m (so f_1 in each cycle of supercycle 1, f_2 in each cycle of supercycle 2, etc.)

I don't think ``whenmod" is appropriate since

a) it has type

whenmod :: Int -> Int -> (Pattern a -> Pattern a) -> Pattern a -> Pattern a

while what I'm looking for is

supercycle :: Int -> Int -> [Pattern a] -> Pattern a

and

b) I want it to change behavior every m//n cycles, instead of m % n (which will change every cycle).

Thanks!