# Cycle Tempos and Phasing?

**URL:** <https://uzu.lurk.org/t/cycle-tempos-and-phasing/793>\
**Category:** TidalCycles\
**Tags:** questions\
**Created:** [14 May 2020 23:09 UTC](https://uzu.lurk.org/t/cycle-tempos-and-phasing/793 "2020-05-14T23:09:42Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ben](https://uzu.lurk.org/user_avatar/uzu.lurk.org/ben/32/362_2.png) [@ben](https://uzu.lurk.org/u/ben)\
**Post date:** [14 May 2020 23:09 UTC](https://uzu.lurk.org/t/cycle-tempos-and-phasing/793/1 "2020-05-14T23:09:42Z")

</div>

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](https://tidalcycles.org/index.php/Interaction/en):

> 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.

---

<div class="post-metadata">

**Author:** ![ben](https://uzu.lurk.org/user_avatar/uzu.lurk.org/ben/32/362_2.png) [@ben](https://uzu.lurk.org/u/ben)\
**Post date:** [14 May 2020 23:28 UTC](https://uzu.lurk.org/t/cycle-tempos-and-phasing/793/2 "2020-05-14T23:28:35Z")

</div>

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
]
```

---

<div class="post-metadata">

**Author:** ![kindohm](https://uzu.lurk.org/user_avatar/uzu.lurk.org/kindohm/32/395_2.png) [@kindohm](https://uzu.lurk.org/u/kindohm)\
**Post date:** [15 May 2020 16:55 UTC](https://uzu.lurk.org/t/cycle-tempos-and-phasing/793/3 "2020-05-15T16:55:03Z")

</div>

> [@ben](#):
>
> So is there a way to `setcps` for only certain patterns?

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

Something like this should work:

```haskell
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:

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

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

```

---

<div class="post-metadata">

**Author:** ![ben](https://uzu.lurk.org/user_avatar/uzu.lurk.org/ben/32/362_2.png) [@ben](https://uzu.lurk.org/u/ben)\
**Post date:** [15 May 2020 17:28 UTC](https://uzu.lurk.org/t/cycle-tempos-and-phasing/793/4 "2020-05-15T17:28:21Z")

</div>

> [@kindohm](#):
>
> d1 $ slow 1.01 $ s "bd_8" d2 $ s "cp_8"

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?

Thanks!

---

<div class="post-metadata">

**Author:** ![kindohm](https://uzu.lurk.org/user_avatar/uzu.lurk.org/kindohm/32/395_2.png) [@kindohm](https://uzu.lurk.org/u/kindohm)\
**Post date:** [15 May 2020 17:30 UTC](https://uzu.lurk.org/t/cycle-tempos-and-phasing/793/5 "2020-05-15T17:30:07Z")

</div>

> [@ben](#):
>
> In this case is `slow` the same as changing the `cps` for that one sound/pattern?

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

---

<div class="post-metadata">

**Author:** ![ben](https://uzu.lurk.org/user_avatar/uzu.lurk.org/ben/32/362_2.png) [@ben](https://uzu.lurk.org/u/ben)\
**Post date:** [15 May 2020 17:46 UTC](https://uzu.lurk.org/t/cycle-tempos-and-phasing/793/6 "2020-05-15T17:46:00Z")

</div>

> [@kindohm](#):
>
> 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:

```
do
  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](https://club.tidalcycles.org/t/week-5-lesson-1-musical-notes/891) answered my question!  
`qtrigger` will bring them back into phase quantized to the start of the next cycle:

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

```
