I want tips for Structuring My First TidalCycles Piece

Hello All Community Member,

I have started experimenting with creating my first piece. While I have grasped the basics of patterns & samples; I find myself struggling with the overall structure and flow of the composition.

I want to hear from anyone who has experience in structuring their TidalCycles performances. What tips or strategies do you use to maintain a coherent flow throughout your pieces? There are any patterns or techniques that work particularly well for transitions between sections??

I have also been exploring programming languages for music and sound generation & i have come across discussions around golang vs java for audio applications.

As well, I found these resources when doing research on this; Using TidalCycles for the first time (Atom) no sound & if anyone have any resources, tutorials or personal experiences please share with me, It would be greatly appreciated!!

Thank you…….:slight_smile:

1 Like

I did something quite a few years ago along these lines, you might want to investigate the use of ur and seqPLoop for this sort of thing -

ur example: livecode/study/rudiments/rudiments-functions.tidal at main · cleary/livecode · GitHub

seqPLoop example: livecode/sets/20201221_winter_solstice_marathon/20201221_winter_solstice_marathon.tidal at main · cleary/livecode · GitHub
and the video (which accidentally hid a lot of the code) here:
https://www.youtube.com/watch?v=l-uQevPg-no

1 Like

I generally have had similar questions and issues and have tried many things. Generally I'm using code not so much for live-coding but for things that are generally more like you are trying to do, make a song with a somewhat repeatable structure, saved out of Supercollider as a multi-track wav that I can split later for any other work.

But, it is tricky because yes, seqPLoop and UR both can work it sort of takes the dynamic nature out. I use some Midi devices for FX sends, I can't remember where the code is, but there is a 'hack' list with github code in the documentation somewhere. For my purposes that works pretty well, and can either be just live evaluation of pattern code as is normally done or with sequences as mentioned by @cleary.

I'm also interested in triggering from midi as possibility and I know there have been a few posts on here about this. I haven't tried that yet, but then you could sequence changes (theoretically) as well.

Let me know what find out - and I'll share anything I find as a useful workflow as well.

I'm particularly interested in the transitions too. Like say a one shot bridge sequence or something like that. Drum fills etc.

1 Like

I'm finishing a Footwork track and I did two attempts, both making use of this function i ported from strudel to tidal:

arrange :: [(Time, Pattern a)] -> Pattern a
arrange secs = _slow total $ timeCat fastened
  where total = sum $ fst <$> secs
        fastened = (\(cyc,sec) -> (cyc,_fast cyc $ sec)) <$> secs

Takes a list of tuples of how long the section will play, and a pattern to represent that section.

However I later realized I prefered stacking all my elements into a big arrange instead of having one arrange per instrument so I did the following:

arrange' :: [(Time, [Pattern a])] -> Pattern a
arrange' secs = _slow total $ timeCat fastened
  where total = sum $ fst <$> secs
        fastened = (\(cyc,sec) -> (cyc,_fast cyc $ stack sec)) <$> secs

Such that it receives a list of patterns instead of a single pattern, basically only saving me the time of having to write stack many times heh

If sounds are mostly predefined I may write those instruments as variables, and assign specific orbits to them too since I won't be using d1, d2, d3...

It's worth noting that when the arrange function triggers a pattern to play, it starts it from 0, so if have some randomness that you want to keep changing you'd have to rotate the pattern by some amount

4 Likes

That looks awesome - are you able to give an example of it in use?