# Thoughts about better support of sequences and beat-wise (rather than cycle-wise) operations in TidalCycles

**URL:** <https://uzu.lurk.org/t/thoughts-about-better-support-of-sequences-and-beat-wise-rather-than-cycle-wise-operations-in-tidalcycles/4149>\
**Category:** TidalCycles\
**Tags:** innards\
**Created:** [15 July 2022 14:42 UTC](https://uzu.lurk.org/t/thoughts-about-better-support-of-sequences-and-beat-wise-rather-than-cycle-wise-operations-in-tidalcycles/4149 "2022-07-15T14:42:37Z")\
**Posts on this page:** 3\
**Page:** 2

<div class="post-metadata">

**Author:** ![emuhr](https://uzu.lurk.org/user_avatar/uzu.lurk.org/emuhr/32/1622_2.png) [@emuhr](https://uzu.lurk.org/u/emuhr)\
**Post date:** [9 February 2025 15:16 UTC](https://uzu.lurk.org/t/thoughts-about-better-support-of-sequences-and-beat-wise-rather-than-cycle-wise-operations-in-tidalcycles/4149/22 "2025-02-09T15:16:39Z")

</div>

Hey,

thanks for the link. I didn't read the Strudel doc yet.  
Looking forward to trying this out once it's in Tidal.

---

<div class="post-metadata">

**Author:** ![yaxu](https://uzu.lurk.org/user_avatar/uzu.lurk.org/yaxu/32/2_2.png) [@yaxu](https://uzu.lurk.org/u/yaxu)\
**Post date:** [10 February 2025 09:04 UTC](https://uzu.lurk.org/t/thoughts-about-better-support-of-sequences-and-beat-wise-rather-than-cycle-wise-operations-in-tidalcycles/4149/23 "2025-02-10T09:04:29Z")

</div>

In summary, after a lot of work splitting out signals from sequences under a pattern class, I went back again to the single model of patterns being functions from timespans to events, adding another field for `tactus` which I'm now renaming to `steps`. Looking back at the [history of Tidal's types](https://slab.org/2025/02/01/tidal-a-history-in-types/), I've oscillated between these two approaches a lot..

This extra field is enough to support a _lot_ of stepwise functionality. This is all that is needed, as the cycles can then become closer to standing for a period.. E.g. if you `stepcat ["a b c", "d e"]`, you can a cycle of five steps. Once implemented, `zip ["a b c", "d e"]` would be a cycle of twelve steps (`"a d b e c d a e b d c e"`), and so on. You end up composing dense cycles stepwise that you then adjust to a particular steps per cycle with `pace` at the end.

So interestingly, introducing stepwise functionality also makes the concept of a cycle more coherent.

The problem is what to do with things like `stepcat [fast "2 4" "a b c", "d e"]`. In this case the first pattern doesn't have a fixed number of steps per cycle.. It's mixing cycle-based and step-based time transformation. Strudel gives up, but in Tidal steps per cycle is itself a pattern so it can try its best:

```plaintext
tidal> drawLine $ stepcat [fast "2 4" "a b c", "d e"]

[3 cycles]
|a-b-c-abcabcd---e---|a-b-c-abcabcd---e---|a-b-c-abcabcd---e---

```

---

<div class="post-metadata">

**Author:** ![yaxu](https://uzu.lurk.org/user_avatar/uzu.lurk.org/yaxu/32/2_2.png) [@yaxu](https://uzu.lurk.org/u/yaxu)\
**Post date:** [10 February 2025 09:11 UTC](https://uzu.lurk.org/t/thoughts-about-better-support-of-sequences-and-beat-wise-rather-than-cycle-wise-operations-in-tidalcycles/4149/24 "2025-02-10T09:11:58Z")

</div>

Ah that's a lie, it works fine in strudel

```plaintext
stepcat("a b c".fast("2 4"), "d e").drawLine()
|a-b-c-abcabcd---e---|a-b-c-abcabcd---e---|a-b-c-abcabcd---e---

```

... because `fast` doesn't actually change the step count, it increases the density of events per step.

It works with expand too:

```plaintext
stepcat("a b c".expand("2 4"), "d e").drawLine()
|a-b-c-a---b---c---de|a-b-c-a---b---c---de|a-b-c-a---b---c---de

```

Hmm!

[Previous page](https://uzu.lurk.org/t/thoughts-about-better-support-of-sequences-and-beat-wise-rather-than-cycle-wise-operations-in-tidalcycles/4149.md?page=1)
