# Etudes for tidal

**URL:** <https://uzu.lurk.org/t/etudes-for-tidal/5440>\
**Category:** TidalCycles\
**Tags:** resources\
**Created:** [11 September 2024 21:03 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440 "2024-09-11T21:03:50Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![cleary](https://uzu.lurk.org/user_avatar/uzu.lurk.org/cleary/32/177_2.png) [@cleary](https://uzu.lurk.org/u/cleary)\
**Post date:** [11 September 2024 21:03 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/1 "2024-09-11T21:03:50Z")

</div>

![image](https://uzu.lurk.org/uploads/default/original/2X/1/15dd63ad44a00cb350f08b1cd7837124ec668ac3.png)

@kit-christopher and I were chatting recently, and decided we are going to try and golf some etudes for tidal to help improve our real time melody composition/syntax/shortcut game.

I think it'd be great to see how other people see these patterns represented in code too, we might be able to develop some new methods/shortcuts etc 🙂

I'm keeping my results here:

> **[livecode/study/etudes at main · cleary/livecode](https://github.com/cleary/livecode/tree/main/study/etudes)**
>
> Live code, configs, and references for Tidalcycles, Punctual, Estuary, Supercollider and potentially others - cleary/livecode

---

<div class="post-metadata">

**Author:** ![cleary](https://uzu.lurk.org/user_avatar/uzu.lurk.org/cleary/32/177_2.png) [@cleary](https://uzu.lurk.org/u/cleary)\
**Post date:** [11 September 2024 21:05 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/2 "2024-09-11T21:05:31Z")

</div>

Starting simple - First 8 bars of "In May" by Franz Behr:  
 ![image](https://club.tidalcycles.org/uploads/default/original/2X/d/d42ae9a856128f3403ddb5b970acceda074b28ea.png)

```haskell
-- In May - Franz Behr   
d1 $ stack [
        arp "down" $
            n "<c6'maj d6 c6'maj d6 [c6 d6 e6] [f6 e6 d6] [e6 d6 c6] d6>" 
        , arp "up" $
            n "<[c5'maj] [b4,f,g]>"
    ] # s "superpiano"

```

[edit] golfed it a bit, fixed a mistake

---

<div class="post-metadata">

**Author:** ![jwaldmann](https://uzu.lurk.org/letter_avatar_proxy/v4/letter/j/977dab/32.png) [@jwaldmann](https://uzu.lurk.org/u/jwaldmann)\
**Post date:** [14 December 2024 20:36 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/3 "2024-12-14T20:36:38Z")

</div>

yeah. now do a tidal golf version of Oxygene Part 2.

 ![Screenshot at 2024-12-14 21-34-32](https://club.tidalcycles.org/uploads/default/original/2X/9/93818f37feaf4574a55d5904484ffdff516e9494.png)

---

<div class="post-metadata">

**Author:** ![cleary](https://uzu.lurk.org/user_avatar/uzu.lurk.org/cleary/32/177_2.png) [@cleary](https://uzu.lurk.org/u/cleary)\
**Post date:** [15 December 2024 21:09 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/4 "2024-12-15T21:09:06Z")

</div>

Thankyou! I will - I got all gee'd up to do a few of these then my spare time ran out...

I'll take a look at it this week hopefully 🙂

---

<div class="post-metadata">

**Author:** ![jwaldmann](https://uzu.lurk.org/letter_avatar_proxy/v4/letter/j/977dab/32.png) [@jwaldmann](https://uzu.lurk.org/u/jwaldmann)\
**Post date:** [5 January 2025 17:29 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/5 "2025-01-05T17:29:38Z")

</div>

```haskell
note (scale "major"
     $ cat [cat $ walk 8 [3,2, 3,3, 5,5, 2,2, 2,2, 2,1]
           , cat $ walk 11 [3,2, 2,2, 5,5, 2,2, 2,2, 2,3]
           ] )

```

using a helper function that builds a zig zag path

```haskell
walk (8 :: Integer) [2,3,4,5]
-- ==> [8, 7,6, 7,8,9, 8,7,6,5, 6,7,8,9,10]

```

with possible implementation

```haskell
walk x ws = scanl (+) x
  $ concat $ zipWith replicate ws (cycle [-1, 1])

```

using functions [https://hackage.haskell.org/package/base-4.21.0.0/docs/Data-List.html#v:scanl](https://hackage.haskell.org/package/base-4.21.0.0/docs/Data-List.html#v:scanl) etc.

full code (it's not much longer) and rendered audio: [https://git.imn.htwk-leipzig.de/waldmann/computer-mu/-/tree/master/tidal/code/ox?ref\_type=heads](https://git.imn.htwk-leipzig.de/waldmann/computer-mu/-/tree/master/tidal/code/ox?ref_type=heads)

Next: any Baroque composer (Telemann, Handel, Corelli, ..) e.g., [Sonatas for two recorders, by G. P. Telemann (1681–1767)](https://www.mutopiaproject.org/cgibin/piece-info.cgi?id=885) this looks highly formulaic (= Kolmogorov-compressible in a pattern language) but is highly enjoyable, and the master of it all - is J S Bach, of course.

---

<div class="post-metadata">

**Author:** ![cleary](https://uzu.lurk.org/user_avatar/uzu.lurk.org/cleary/32/177_2.png) [@cleary](https://uzu.lurk.org/u/cleary)\
**Post date:** [5 January 2025 21:59 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/6 "2025-01-05T21:59:14Z")

</div>

Thanks for that - very interesting, you reminded me to check it out and I decided I'm going to give it a try with existing tidal functions, there's a few that I'd like to understand a bit better which I think may be related. I also want to try and understand the relationship between `scale` use and note arithmetic better because I have some grey areas ... we'll see how far I get, there's a lot of patterns in that piece, but also a lot of pattern breaking...

---

<div class="post-metadata">

**Author:** ![jwaldmann](https://uzu.lurk.org/letter_avatar_proxy/v4/letter/j/977dab/32.png) [@jwaldmann](https://uzu.lurk.org/u/jwaldmann)\
**Post date:** [15 June 2026 09:31 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/7 "2026-06-15T09:31:20Z")

</div>

J S Bach, Partita 3, BWV 1006 [https://imslp.org/wiki/File:PMLP04292-Partita\_BWV\_1006.PDF](https://imslp.org/wiki/File:PMLP04292-Partita_BWV_1006.PDF)

 ![](https://uzu.lurk.org/uploads/default/original/2X/2/2655a04b2d4252e52b88184bd66fbedf2a1308d8.png)

could be used as exercise for nested (slow)cat.

example: measure 20 and 21:

`<bf*12 a*12>/12 <f <d*3 c*3 c*3 bf4*3>/3 >`

Ugh, it seems that IMSLP does not allow "deep" links (I guess they want/need to show the copyright disclaimer first. Well, then go through [https://imslp.org/wiki/6\_Violin\_Sonatas\_and\_Partitas,\_BWV\_1001-1006\_(Bach,\_Johann\_Sebastian)](https://imslp.org/wiki/6_Violin_Sonatas_and_Partitas,_BWV_1001-1006_(Bach,_Johann_Sebastian)) ),

or [https://www.mutopiaproject.org/ftp/BachJS/BWV1006/bwv-1006\_1/](https://www.mutopiaproject.org/ftp/BachJS/BWV1006/bwv-1006_1/) , they also have a MIDI file (generated from lilypond, I guess) that one could use as input for an automatic pattern compressor ...

And, the long game is this: once you have a compressed representation C of (some piece of music) M, you change one small piece in C, and get back some M' that is somehow similar to M, but also somehow not. (Try with the above, change any note in the pattern.) That's what LLMs do, sort of. (M = training data, C = weights, difference(C',C) = prompt, hand-wavingly)

---

<div class="post-metadata">

**Author:** ![scrappy\_fiddler](https://uzu.lurk.org/user_avatar/uzu.lurk.org/scrappy_fiddler/32/3524_2.png) [@scrappy\_fiddler](https://uzu.lurk.org/u/scrappy_fiddler)\
**Post date:** [19 June 2026 07:28 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/8 "2026-06-19T07:28:39Z")

</div>

on the uzu discord, people started with some strudel code golf too, which, in essence is a mini notation golfing, very similar to this thread.

very fun stuff to think about.

---

<div class="post-metadata">

**Author:** ![cleary](https://uzu.lurk.org/user_avatar/uzu.lurk.org/cleary/32/177_2.png) [@cleary](https://uzu.lurk.org/u/cleary)\
**Post date:** [22 June 2026 05:54 UTC](https://uzu.lurk.org/t/etudes-for-tidal/5440/9 "2026-06-22T05:54:43Z")

</div>

I kind of didn't follow through with this, in part because I started using strudel in earnest and wasn't sure how to reconcile the function differences (eg with `arp`) between tidal and strudel ...

Is the discord discussion using mini-notation exclusively, or is there strudel/tidal specific elements?
