Is there a way to use functional interfaces on patterns of functions?
I need something like arp
, but with fixed length arpeggio patterns independent from the number of notes in the chord in order to better combine with existing rhythm patterns. So arp
's predefined arpeggio strategies won't work. With arpWith
, it can be easily done, but now there doesn't seem to be a way to apply a pattern of multiple arpeggio strategies (as possible with arp
, e.g. arp "<up down>"
).
I can create patterns out of functional arpeggio strategies using listToPat
, e.g.
up notes = notes
down notes = reverse notes
updown notes = init notes ++ init (reverse notes)
downup notes = init (reverse notes) ++ init notes
fixarp length strategy notes = take length $ concat $ repeat $ strategy notes
pat1 = listToPat [fixarp 8 updown, fixarp 8 downup]
But there seems to be no obvious way to apply these patterns.
Any ideas?