| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Harmonic.Interface.Tidal.Motif
Contents
Description
A motif is a plain pattern: a Pattern Bool rhythm and a Pattern Int
contour of voicing-index degrees, realised against the active harmony by
arrange. The classic developments are already Tidal —
retrograde = rev augmentation = slow n transposition = |+ / |- diminution = fast n rotation = <~ / ~> combination = struct
— so this module supplies only what Tidal lacks: a combining operator that reads as one gesture, a melodic inversion, and a retrograde that spans a phrase rather than a cycle.
Combination
(>:<) :: Pattern Bool -> Pattern Int -> Pattern Int infixl 4 Source #
Combine a rhythm with a contour: the rhythm's onsets sample the fragment.
struct under a name that reads as motivic development at the call site.
motif = rhythm >:< contour
Inversion
mirror :: Int -> Pattern Int -> Pattern Int Source #
Melodic inversion of a contour about a degree axis. Degree d reflects to
2 * axis - d, so mirror 0 turns an ascending line into its descent
around the root.
Retrograde
retro :: Pattern a -> Pattern a Source #
Retrograde a whole bar. One bar is beatsPerBar cycles.
retro contour -- true phrase retrograde
retroN :: Pattern Time -> Pattern a -> Pattern a Source #
Retrograde over cyc cycles rather than one.
Tidal's rev reverses within each cycle. One cycle here is one beat, so a
motif written the house way ("[0 3 1 2 …]/4", a bar) spans four cycles,
and rev on it reverses each beat in place and leaves the phrase order
untouched — which reads as "rev did nothing" and is easy to ship by
mistake.
retroN 8 motif -- retrograde a two-bar phrase