Longer compositions in tidalcycles


I find it incredibly easy to noodle around in tidal: making loops and chopping samples and effects, etc. Composing an entire track naturally requires more forethought, but given the cyclic nature of tidal, I’ve found it incredibly difficult to come up with a consistent structure for long-form composition (which for me is a long string of let and ur statements that ends up just turning into a longer, more complicated loop).

I was wondering if anyone has tried composing an entire song (as in: evaluate one block and the song plays), in just tidalcycles, And if they’ve done it more than once, how have they done it?

1 Like


For awhile, I was using let to define different scales, harmonies, chord progressions for a song and then executing it line-by-line (sometimes block-by-block). I never found tidal to be linear - I really enjoy the non-linear, performative nature of it. Doesn’t orca do something like sequencing different tidal snippets along a timeline? Maybe that’s what you’re looking for?

1 Like


seqP could work for this. Build up sections and then run them at specified cycles

1 Like


Sometimes I find it useful to use tidal for idea generation and then leave the linear arranging as a later task in a DAW. I’ve also used ur for this with some mixed results. With ur what I’ve found works best for me it to compose the sections as regular tidal patterns (without ur) and then refactor into a structure with ur.

I also made some utility functions to make ur easier to deal with.

mkpat name pattern = (name,pattern)

mkfx name fx = (name,fx)

I also added the following snippets to atom because I could never remember the syntax that ur requires:

  'song - ur template - length channel':
    'prefix': 'urt'
    'body': 'let\n    songLen = $1\n    structure = ""\n    patterns = []\n    fx = []\n    in\n    $2 $ ur songLen structure patterns fx'

  'song - template':
    'prefix': 'songt'
    'body': 'do\nd9 $ midicmd "stop" # s "midi"\nhush\n\ndo\ncps (128/60/2)\nd9 $ midicmd "midiClock*48" # s "midi"\n\nd9 $ midicmd "stop" # s "midi"\n\nd9 $ midicmd "start" # s "midi"'

Anyway, still an area I’m trying to figure out too. Hope that’s useful.