# Week 3 lesson 2 - cut vs legato

**URL:** <https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515>\
**Category:** Week 3 - every, $, working with longer samples\
**Created:** [28 April 2020 18:42 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515 "2020-04-28T18:42:58Z")\
**Posts on this page:** 20\
**Page:** 1

<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:** [28 April 2020 18:42 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/1 "2020-04-28T18:42:58Z")

</div>

Hi [@cycle0](https://uzu.lurk.org/groups/cycle0)!

Here's the first of three videos sharing techniques for dealing with longer samples, this time looking at the 'cut' and 'legato' control patterns, and the difference between them.

[![](https://img.youtube.com/vi/dQPmE1WaD1k/maxresdefault.jpg "[TidalClub] week 3, lesson 2 - cut vs legato") ](https://www.youtube.com/watch?v=dQPmE1WaD1k)

Here's a couple of examples to play with. Note what happens to the 'bev' sample when you `hush` and there's nothing to 'cut' it..

```haskell
d1 $ jux rev $ speed "<1 0.5 0.75>(<3 5>,8)" # sound "bev" # cut 1
  # room 0.4 # sz 0.9 # gain 1.3

d2 $ jux rev $ sound "sax(3,8)" # legato 1 # n 3 
  # note "<[9 7] 5 [9 12]>" # djf 0.7 # sz 0.4 # room 0.4

```

If you're not up to speed, or fancy a recap, you can check all the previous lessons here: [Weeks 1-4 - index](https://club.tidalcycles.org/t/cycle-zero-index/395)

**Next lesson:**

> [@Week 3 lesson 3 - slice and splice](https://club.tidalcycles.org/t/week-3-lesson-3-slice-and-splice/519):
>
> Continuing on from [Week 3 lesson 2 - cut vs legato](https://club.tidalcycles.org/t/week-3-lesson-2-cut-vs-legato/515) .. Lets look at a way of 'beat slicing' looping samples, using slice and splice: [[[TidalClub] Week 3 lesson 3 - slice and splice] ](https://www.youtube.com/watch?v=hKhPdO0RKDQ) setcps 0.6 -- Hear it straight d1 $ splice 8 "0 1 2 3 4 5 6 7" $ sound "break:4" -- Now with a more messed-up pattern d1 $ splice 8 "6 1 [2 3] ~ 4 1 6\*2 7" $ sound "break:4" -- Try changing the cps to hear it at different speeds -- Try manipulating the pattern of slices d1 $ splice 8 (fast "1 [0.5 0…

---

<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:** [28 April 2020 19:51 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/2 "2020-04-28T19:51:05Z")

</div>

Does Tidal automatically place all different sounds into their own orbits (so then delay, reverb, etc, aren't really global anymore)? Or does it only dynamically do that when using cut groups?

---

<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:** [28 April 2020 19:57 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/3 "2020-04-28T19:57:26Z")

</div>

Hi @ben

If you look in BootTidal.hs (atom should tell you where that file is when you start tidal), you'll see something like this:

```haskell
    d1 = p 1 . (|< orbit 0) 
    d2 = p 2 . (|< orbit 1) 
    d3 = p 3 . (|< orbit 2)
    ... etc ...

```

This means that when you do

```haskell
d2 $ sound "bd"

```

It gets expanded to

```haskell
p 2 $ sound "bd" |< orbit 1

```

So every pattern is put in its own orbit, but not the sounds within them.

So you'd still get problems with e.g.:

```haskell
d1 $ sound "[bd,ho]" # cut 1

```

As two sounds would trigger at the same time and in the same orbit and cut group, and one would 'win' and cancel the other one out.

---

<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:** [28 April 2020 19:58 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/4 "2020-04-28T19:58:53Z")

</div>

Got it thank you.

---

<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:** [28 April 2020 20:07 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/5 "2020-04-28T20:07:19Z")

</div>

I added a couple of examples to the above (I fixed the colour syntax highlighting by the way)

---

<div class="post-metadata">

**Author:** ![bcgreen](https://uzu.lurk.org/user_avatar/uzu.lurk.org/bcgreen/32/763_2.png) [@bcgreen](https://uzu.lurk.org/u/bcgreen)\
**Post date:** [28 April 2020 23:49 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/6 "2020-04-28T23:49:17Z")

</div>

Don't forget that you can also use values other than '1' with `legato`. For example, `legato 0.5` will play the sound for half a cycle, e.g.:

`d1 $ s "sax" # legato 0.5`

...and `legato 1.5` will cause the sound to overlap with the next cycle, playing it for 1.5 cycles:

`d1 $ s "sax" # legato 1.5`

---

<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:** [28 April 2020 23:51 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/7 "2020-04-28T23:51:18Z")

</div>

Yes I forgot to mention that!

---

<div class="post-metadata">

**Author:** ![gnozo](https://uzu.lurk.org/user_avatar/uzu.lurk.org/gnozo/32/100_2.png) [@gnozo](https://uzu.lurk.org/u/gnozo)\
**Post date:** [30 April 2020 02:11 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/8 "2020-04-30T02:11:38Z")

</div>

the example is fascinating one thing i didn't understand : i tweaked the euclidean to sax(3,7) and it becomes polyphonic (!).  
` d2 $ jux rev $ sound "sax(3,7)" # legato 1 # n 3 # note "<[9 7] 5 [9 12]>"`  
it seems that jux is doing that? quite powerful..  
i tried getting drawLine to tell me about it in vain, i might not get how to do it for embedded structures :  
` drawLine "x(3,7)" #note "<[9 7] 5 [9 12]>"`

---

<div class="post-metadata">

**Author:** ![Alanza](https://uzu.lurk.org/user_avatar/uzu.lurk.org/alanza/32/3179_2.png) [@Alanza](https://uzu.lurk.org/u/Alanza)\
**Post date:** [2 May 2020 16:42 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/9 "2020-05-02T16:42:15Z")

</div>

this is obviously very much neither here nor there, but I think the jargon for what `legato` accomplishes is a little closer to "tenuto"

---

<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:** [3 May 2020 13:07 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/10 "2020-05-03T13:07:14Z")

</div>

Ah yes that does seem closer!

---

<div class="post-metadata">

**Author:** ![Klinke](https://uzu.lurk.org/user_avatar/uzu.lurk.org/klinke/32/670_2.png) [@Klinke](https://uzu.lurk.org/u/Klinke)\
**Post date:** [3 May 2020 13:53 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/11 "2020-05-03T13:53:17Z")

</div>

`drawLine` needs a Pattern of Characters, so it can not take control patterns like `note` "...". But have you tried to evaluate just structures directly. E.g. for `sound "bd sd" |>| crush "[1 2]*3"` you get:

```
(0>⅙)|crush: 1.0f, s: "bd"
(⅙>⅓)|crush: 2.0f, s: "bd"
(⅓>½)|crush: 1.0f, s: "bd"
(½>⅔)|crush: 2.0f, s: "sd"
(⅔>⅚)|crush: 1.0f, s: "sd"
(⅚>1)|crush: 2.0f, s: "sd"

```

I find this really useful. The only disadvantage I found compared to drawLine is, that only the first cycle is shown, so the `< >` variations are ignored.

---

<div class="post-metadata">

**Author:** ![tkarches](https://uzu.lurk.org/user_avatar/uzu.lurk.org/tkarches/32/286_2.png) [@tkarches](https://uzu.lurk.org/u/tkarches)\
**Post date:** [4 May 2020 02:52 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/12 "2020-05-04T02:52:40Z")

</div>

How do you get the sample to stop playing in the first example?  
"hush" or "d1 $ silence" don't work

Is there an emergency "stop all" if Tidal gets into a situation where it won't stop?

thx  
tom

---

<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:** [4 May 2020 07:38 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/13 "2020-05-04T07:38:24Z")

</div>

To stop an ongoing sound, you can do `ctrl-.` (ctrl and period) in supercollider.

To do this in tidal you can run this in supercollider first

```haskell
dirt.soundLibrary.addSynth(\panic, (play: { ~dirt.orbits.do(_.freeSynths) }));

```

then do this in tidal

```haskell
once $ s "panic"

```

---

<div class="post-metadata">

**Author:** ![mattia.paterna](https://uzu.lurk.org/user_avatar/uzu.lurk.org/mattia.paterna/32/112_2.png) [@mattia.paterna](https://uzu.lurk.org/u/mattia.paterna)\
**Post date:** [10 May 2020 17:40 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/14 "2020-05-10T17:40:37Z")

</div>

that is probably the thing that made me the most excited during the quarantine - together with patterning legato:

```haskell
d2
    $ slow 4
    $ off 0.25 (|+ 3) 
    $ note (scale "minor" "0 7 -1 3 5") 
    # s "tabla"
    # n (irand 16)
    + legato "0.7 <0.6 3 1.5> 4"

```

---

<div class="post-metadata">

**Author:** ![bcgreen](https://uzu.lurk.org/user_avatar/uzu.lurk.org/bcgreen/32/763_2.png) [@bcgreen](https://uzu.lurk.org/u/bcgreen)\
**Post date:** [12 May 2020 04:15 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/15 "2020-05-12T04:15:52Z")

</div>

> To stop an ongoing sound, you can do `ctrl-.` (ctrl and period) in supercollider.
> 
> To do this in tidal you can run this in supercollider first
> 
> ```haskell
> dirt.soundLibrary.addSynth(\panic, (play: { ~dirt.orbits.do(_.freeSynths) }));
> 
> ```
> 
> then do this in tidal
> 
> ```haskell
> once $ s "panic"
> 
> ```

Or, if you're using Visual Studio Code for your Tidal editor, you can map 'Ctrl + .' to the 'hush' command of the Tidal plugin-- I got so used to Ctrl + . with Supercollider, this was a no-brainer for me. 🙂

Bryan

---

<div class="post-metadata">

**Author:** ![bcgreen](https://uzu.lurk.org/user_avatar/uzu.lurk.org/bcgreen/32/763_2.png) [@bcgreen](https://uzu.lurk.org/u/bcgreen)\
**Post date:** [12 May 2020 04:18 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/16 "2020-05-12T04:18:30Z")

</div>

> [@mattia.paterna](#):
>
> that is probably the thing that made me the most excited during the quarantine - together with patterning legato:
> 
> d2 $ slow 4 $ off 0.25 (|+ 3) $ note (scale "minor" "0 7 -1 3 5") # s "tabla" # n (irand 16) + legato "0.7 \<0.6 3 1.5\> 4"

Damn....I listened to this for about 10 minutes straight.....

Very nice!

Bryan

---

<div class="post-metadata">

**Author:** ![mattia.paterna](https://uzu.lurk.org/user_avatar/uzu.lurk.org/mattia.paterna/32/112_2.png) [@mattia.paterna](https://uzu.lurk.org/u/mattia.paterna)\
**Post date:** [18 May 2020 11:09 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/17 "2020-05-18T11:09:44Z")

</div>

Thank you, appreciated 🙂  
Although I see a drawback: I'm wandering around when making patterns and, when I find something that I really like, I get stuck in it and lose track of time.  
Incredibly good in search mode, not so much during live performances!

---

<div class="post-metadata">

**Author:** ![cortesana.malinali](https://uzu.lurk.org/user_avatar/uzu.lurk.org/cortesana.malinali/32/2738_2.png) [@cortesana.malinali](https://uzu.lurk.org/u/cortesana.malinali)\
**Post date:** [24 August 2020 04:01 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/18 "2020-08-24T04:01:40Z")

</div>

I always wanted to know this exactly, thank you!

---

<div class="post-metadata">

**Author:** ![Zeraco\_Saitam](https://uzu.lurk.org/user_avatar/uzu.lurk.org/zeraco_saitam/32/1666_2.png) [@Zeraco\_Saitam](https://uzu.lurk.org/u/Zeraco_Saitam)\
**Post date:** [24 February 2021 23:23 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/19 "2021-02-24T23:23:28Z")

</div>

Hi! Supercollider returns this error when I try to run that panic bit:

ERROR: Variable 'dirt' not defined.  
in interpreted text  
line 1 char 4:

dirt.soundLibrary.addSynth(\panic, (play: { ~dirt.orbits.do(\_.freeSynths) }));

* * *

-\> nil

what's the problem? ☹

---

<div class="post-metadata">

**Author:** ![polymorphic.engine](https://uzu.lurk.org/user_avatar/uzu.lurk.org/polymorphic.engine/32/30_2.png) [@polymorphic.engine](https://uzu.lurk.org/u/polymorphic.engine)\
**Post date:** [25 February 2021 11:22 UTC](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515/20 "2021-02-25T11:22:27Z")

</div>

> [@Zeraco\_Saitam](#):
>
> dirt.soundLibrary.addSynth(\panic, (play: { ~dirt.orbits.do(\_.freeSynths) }));

dirt is stored in the global variable ~dirt, so you need to write

```haskell
 ~dirt.soundLibrary.addSynth(\panic, (play: { ~dirt.orbits.do(_.freeSynths) })); 

```

[Next page](https://uzu.lurk.org/t/week-3-lesson-2-cut-vs-legato/515.md?page=2)
