# Discussion: \`cut\` behaviour for simultaneous events (eg chords)

**URL:** <https://uzu.lurk.org/t/discussion-cut-behaviour-for-simultaneous-events-eg-chords/5181>\
**Category:** TidalCycles\
**Tags:** questions\
**Created:** [10 May 2024 21:01 UTC](https://uzu.lurk.org/t/discussion-cut-behaviour-for-simultaneous-events-eg-chords/5181 "2024-05-10T21:01:27Z")\
**Posts on this page:** 6\
**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:** [10 May 2024 21:01 UTC](https://uzu.lurk.org/t/discussion-cut-behaviour-for-simultaneous-events-eg-chords/5181/1 "2024-05-10T21:01:27Z")

</div>

Over the years I've often run into issues where I'm executing simultaneous events (like chords with multiple notes) and attempted to use `cut` in combination with these chords only to find that they are no longer chords because cut limits the simultaneous event grouping to a single sound - eg

```haskell
d1 $ n ("<af'sixNine'5 f'min11'5>/4") # s "superhoover"

-- vs
d1 $ n ("<af'sixNine'5 f'min11'5>/4") # s "superhoover"
   # cut 1 -- creates a single note

```

I'm not familiar enough with the internals of superdirt to know whether what I'm asking is impossible - but @julian is there a possibility that the `cut` behaviour could be modified to allow simultaneous events into the playback when they're on the same cut group?

---

<div class="post-metadata">

**Author:** ![julian](https://uzu.lurk.org/user_avatar/uzu.lurk.org/julian/32/1398_2.png) [@julian](https://uzu.lurk.org/u/julian)\
**Post date:** [1 June 2024 06:49 UTC](https://uzu.lurk.org/t/discussion-cut-behaviour-for-simultaneous-events-eg-chords/5181/2 "2024-06-01T06:49:26Z")

</div>

Hi @cleary – I just saw this. The question is more a specification issue, I think. How would we distinguish between events in a chord and other events that just happen to be simultaneous?

Maybe we would need a variant of cut that cuts _only_ across orbits, but not in the same. Would this be the expected behaviour?

---

<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:** [3 June 2024 05:36 UTC](https://uzu.lurk.org/t/discussion-cut-behaviour-for-simultaneous-events-eg-chords/5181/3 "2024-06-03T05:36:41Z")

</div>

Hey @julian thanks for the reply -

Expected behaviour would be that if there are:

- simultaneous events
- in the same orbit
- with the same `cut` group applied

Then all events should be played.

If the events are not simultaneous, then the later events should stop playback of any earlier event that is:

- in the same orbit
- with the same `cut` group applied

If they are not meeting these orbit/cut group conditions then they should not affect each other.

Currently, the behaviour is that only one of the events will play, if there are:

- simultaneous events
- in the same orbit
- with the same `cut` group applied

Some examples of expected behaviour:

```haskell
d1 $ note "c'major" # s "superfm" # cut 1
 -- should play 3 notes, [c,e,g]

```

```haskell
d1 $ note "c'major a'minor" # s "superfm" # cut 1 # legato 2
-- should play 3 notes, [c,e,g],
-- which are stopped halfway through the cycle by 3 more notes [a,c,e]

```

```haskell
d1 $ note "c'major" # s "superfm" # cut 1 # orbit 1

d2 $ s "bd" # cut 1 # orbit 1
-- should play 4 notes, [c,e,g, bd]

```

```haskell
d1 $ note "c'major" # s "superfm" # cut 1 # orbit 1

d2 $ note "~ a'minor" # s "superfm" # cut 1 # orbit 1
-- should play 3 notes, [c,e,g], 
-- which are stopped halfway through the cycle by another 3 notes [a,c,e]

```

```haskell
d1 $ note "c'major" # s "superfm" # cut 1 # orbit 1

d2 $ note "~ a'minor" # s "superfm" # cut 2 # orbit 1
-- should play 3 notes, [c,e,g], 
-- followed by another 3 notes halfway through the cycle [a,c,e] 
-- which don't affect the first notes because they are in a different cut group

```

```haskell
d1 $ note "c'major" # s "superfm" # cut 1 # orbit 1

d2 $ note "~ a'minor" # s "superfm" # cut 1 # orbit 2
-- should play 3 notes, [c,e,g], 
-- followed by another 3 notes halfway through the cycle [a,c,e] 
-- which don't affect the first notes because they are in a different orbit

```

I'm not sure this is a very good way to explain it, but I hope it's clear 😬

---

<div class="post-metadata">

**Author:** ![julian](https://uzu.lurk.org/user_avatar/uzu.lurk.org/julian/32/1398_2.png) [@julian](https://uzu.lurk.org/u/julian)\
**Post date:** [3 June 2024 06:08 UTC](https://uzu.lurk.org/t/discussion-cut-behaviour-for-simultaneous-events-eg-chords/5181/4 "2024-06-03T06:08:47Z")

</div>

Yes, it may affect some existing code, but it makes sense. Can you try [this branch](https://github.com/musikinformatik/SuperDirt/tree/topic-dont-cut-at-start)?

---

<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:** [3 June 2024 19:52 UTC](https://uzu.lurk.org/t/discussion-cut-behaviour-for-simultaneous-events-eg-chords/5181/5 "2024-06-03T19:52:59Z")

</div>

Thankyou! This is behaving exactly as I'd hoped! 🙂

---

<div class="post-metadata">

**Author:** ![seriousmusician](https://uzu.lurk.org/user_avatar/uzu.lurk.org/seriousmusician/32/3264_2.png) [@seriousmusician](https://uzu.lurk.org/u/seriousmusician)\
**Post date:** [7 December 2025 22:25 UTC](https://uzu.lurk.org/t/discussion-cut-behaviour-for-simultaneous-events-eg-chords/5181/6 "2025-12-07T22:25:07Z")

</div>

I’m been running into this same issue on numerous occasions. Can we merge this branch into main?
