The thing that I think could push tidalcycles forward is more abstract pattern parsing.
I’ve found that my biggest limitation working with tidal is how there’s no way to nest patterns.
For example, if I have two distinct rhythms, let’s say "t*2 [~ t t]"
and "[t t*2 t] [t ~ t]
, I might want to combine them for a brief drum fill, making "t*2 [~ t t] [t t*2 t] [t ~ t]
. This seems like a pretty simple task, but there’s no clear way accomplish this apart from just combining the strings
"t*2 [~ t t]" ++ "[t t*2 t] [t ~ t]"
which quickly gets messy with larger and longer patterns.
If there were a function where you could give names to patterns
pt :: Pattern_Name -> Pattern -> Pattern_Shorthand"
example:
pt "ex" = "t*2 [~ t t]"
pt "ex2" = "[t t*2 t] [t ~ t]"
it would make composing so so so so much easier
"t*ex t*ex2"
You could also rapidly compose new patterns by combining two shorthands, ie.
"ex*ex2" = "[[t t*2 t] [t ~ t]]*2 [~ [t t*2 t] [t ~ t] [t t*2 t] [t ~ t]]"
which would be great for improvising creating motifs of rhythms throughout a song as a whole
(like if you had a 90 cycle long pattern with a bunch of repeating elements).
Currently, the only way to even get close to this is by using ur
and creating an effect that uses struct
to change a pattern, which is incredibly cumbersome, not to mention capable of only one level of abstraction (you can’t combine more than one effect, hence no nested patterns).