TidalCycles (or Tidal for short) is a language for
live coding patterns.
It allows you to make
musical patterns with text, describing sequences and ways of
transforming and combining them, exploring complex interactions
between simple parts.
Tidal allows you to express music with very flexible timing, providing
a little language for describing patterns as step sequences (which
can be polyphonic and polymetric), some generators of continuous
patterns (e.g. sinewaves, sawtooths) and a wide range of pattern
transformations.
Tidal is highly composable in that pattern
transformations can be easily combined together, allowing you to
quickly create complex patterns from simple ingredients.
Tidal does not make sound itself, but is designed for use with the
SuperDirt synth, and can control other synths over Open Sound Control
or MIDI.
Tidal is embedded in the Haskell language.
You don't have to learn
Haskell to learn Tidal, but as you get deeper, it might help to pick
up an introduction.
You could try Graham Hutton's "Programming in
Haskell", Miran Lipovača's
Learn you a Haskell for Great Good.
Or, you could try learning just
by playing with Tidal…