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
Will arrange work?
arrange
Allows to arrange multiple patterns together over multiple cycles. Takes a variable number of arrays with two elements specifying the number of cycles and the pattern to use.
arrange(
[4, "<c a f e>(3,8)"],
[2, "<g a>(5,8)"]
).note()
@Kizayashu i m a bit late to this party as i only started using strudel this weekend.
if you allready corrected the issue and in this post too, better put an edit in.
too me the pattern here plays exactly as you ask?
e3 g3 then f#4 until the - (stopnote) and then goes on into the g4.
I m not sure if it s possible to make the software STOP then though.