Cycle Tempos and Phasing?

Is there a way to have two patterns playing at the same time (so on top of each other) but at different cps? The end goal being the phasing of the two patterns. So is there a way to setcps for only certain patterns? I saw this in the documentation:

Patterns don't (yet) have independent tempos though, if you change it on one pattern, it changes on all of them.

I assume this still holds true?

I'm sure there are many more ways at phasing besides tempo that I'm not thinking about if so... Maybe rot is one? Or slow 1.01? But both of those would reset at the beginning of every cycle I believe. Hmm.

PS: Still curious about the setcps question, but this approach seems to lead to some interesting results:

d1 $ stack [
    s "drum*8" # nudge (range 0 2.5 $ slow 20 tri) # pan 0,
    s "sd*8" # nudge (range 0.1 2.5 $ slow 20 tri) # pan 0.5,
    s "hh*8" # nudge (range 0.2 2.5 $ slow 20 tri) # pan 1
1 Like

Unfortunately no. Also, the cps pattern is a global pattern.

Something like this should work:

d1 $ slow 1.01 $ s "bd*8"

d2 $ s "cp*8" 

But if you want to modulate the tempos of both, then you either have to pattern slow or use a nudge pattern, but with both you'll run in to some cycle boundary jaggedness:

d1 $ slow "<1 1.5 1.25 1.75>" $ s "bd*16"

d2 $ slow "<1.333 0.7 2.33>" $ s "cp*16"

Huh, so it's as simple as that!?

I was under the impression that slow would slow down the contents within the cycle but that the duration of the cycle itself would stay the same, and therefore the cycle would reset itself. That doesn't seem to be what's happening though. In this case is slow the same as changing the cps for that one sound/pattern?


1 Like

Yes! slow will not reset every cycle (nor will fast).

Wow, well awesome. There's my answer thank you!

If I wanted patterns to phase out of time using slow, but then slam back in sync at some point then I assume that I could use either resetCycles or maybe trigger 1? Both of those cause a hiccup when they're evaluated though as they're apparently not being quantized to tempo. I assumed that this would work but it also hiccups:

  d1 $ trigger 1 $ slow 1.01 $ s "bd*8"
  d2 $ trigger 1 $ s "hh*8" 

It seems that what I want is the functionality of a trigger 1 and a resetCycles combo?
Talking out loud here so hopefully this makes sense lol.

Thanks again.

EDIT: Alex's new video answered my question!
qtrigger will bring them back into phase quantized to the start of the next cycle:

  d1 $ qtrigger 1 $ slow 1.01 $ s "bd*8"
  d2 $ qtrigger 1 $ s "hh*8" # pan 0.7