Pattern sequencing in Strudel - how to play full cycles sequentially?

Hi! I'm learning Strudel and trying to sequence multiple patterns so each plays fully before moving to the next. Here's what I'm attempting:

setcpm(30)

note(`<
[<b4 a4 g4> e3 <b4 a4 g4> g3 <b4 a4 g4> ]
[f#4 g3 f#4 - e3 f#4 g3 f#4]
[g4 f#4 g4 f#4 g3 f#4 e3 f#4]
>`).sound("piano")

Problem:
The patterns overlap/cycle before completing. I want:

First pattern ([<b4...>]) plays completely
Then second pattern ([e3...]) plays ...

Thanks for any guidance!

I don't know exactly how strudel does it, but I assume it's fundamentally the same as in tidalcycles, where you can never play a pattern "fully", as each pattern is infinite (most are periodic, but 1. that's not a strict requirement, and 2. functions on patterns don't know the periods of their arguments).

This implies that you cannot concatenate patterns ("one after the other"), only interleave them - I think that's what you are getting here, < ... > is minisyntax notation for cat, whose semantics is explained in https://hackage-content.haskell.org/package/tidal-core-1.10.0/docs/Sound-Tidal-Core.html#v:cat.

There are some methods for global composition https://hackage-content.haskell.org/package/tidal-core-1.10.0/docs/Sound-Tidal-UI.html#g:4 but you always need to specify how many cycles you want.

Does strudel have a different model? I'd like to know.

1 Like