Live stream #7 - q&a

Ok @cycle0 and @cycle1, time for another live stream, bring your questions! Anything unclear from any part of the course? Any questions about anything Tidalish? Add them below or in the live chat.

2020-06-07T19:00:00Z

1 Like

I’d love for you to go over OSC input using the new 1.5 paradigm if possible. Particularly placing it in various places for various reasons, like mini-notation for pitch, rhythm, FX control, etc.

I’m also curious if MIDI Pitchbend is possible to send out.

Curious if there was a different way to repeatCycles. Like if I had

d1 $ repeatCycles 16 $ sound "arpy(5,8)" # n (irand 8)

How could I store that random sequence, have it repeat 16 cycles and then add functions to that sequence? Like degradeBy 0.15 for example. Could you store the cycle in a variable and then add functions?

Would like to repeat a randomly selected pattern and then add more interaction with that specific repeating cycle.

1 Like

Two questions:

  1. is there a way in Tidal to create your own envelope with custom shapes and custom duration as you would do in SC using Env?
  2. non-linear playback using an envelope (ideally the one created above) in a way that you move from one point to the other in the envelope?

To keep repeating a randomly selected pattern but be able to change to a new one when I want, I use this ugly hack:

d1 $ repeatCycles 1024 $ (0 ~>) $ [stuff…]

Not sure if that is quite what you mean though…

2 Likes

If delay is a global effect, does that mean that different d1, d2 etc. with different # delayt will interfere between each other?

I have struggled and struggled with this. The fundamental problem with the way that I am used to working in a synth (either in SuperCollder or analog synthesis) is that adding a 'release' to a note after the gate closes makes the note longer. In SuperDirt the total length of the note seems to be fixed by the sustain parameter in DirtEvent.sc, and I cannot for the life of me figure out how to get it to behave like what I would call a normal synth envelope.

I would be so happy if someone who understands this better than I do could offer a solution, as it just makes me want to cry with frustration.

I am not talking about ADSR envelope particularly, I am talking about envelopes in general where you define the breakpoints and both duration and curves are custom defined.
But yes, I agree with the whole duration problem you mention.

Ok, just going back to my puzzling question from before, since I think I have the answer in python.
This has nothing to do with music theory since it is probably breaking some rules, but it is irrelevant here.
I found a solution that works in python, so I'd be curious to know how it translates to haskell since it could provide interesting results.
If we go back to my example, there is actually two ways to see it and that is what cause confusion I think.
For the chord progression "c a e", it can be "c4 a4 e4" which this the most obvious, but I actully had in mind "c4 a3 e4" and interstingly the symmetry "on" a would lead to two different results.
Let's convert to numbers to make it easier.
"c4 a4 e4" = [0, 9, 4] and "c4 a3 e4" = [0, -3, 4]

The python function will then be :

def vert_rev(pat, root):
    new_pat = [(y + 2*(root - y))for y in pat]
    return new_pat

For the two cases, we have :

pat = [0,9,4]
new_pat = vert_rev(pat, 9)
pat = [0,-3,4]
new_pat = vert_rev(pat, -3)

First result is [18, 9, 14] = "f5# a4 b5"
Second result is [-6, -3, -10] = "f3# a3 b3"

Interestingly it gives the same notes but in different octaves and inverted direction v vs. ^

This seems to be the same in Tidal:

vert_rev n pat = n +| (n -| pat)

vert_rev 9 "0 9 4" :: Pattern Double

vert_rev (-3) "0 -3 4" :: Pattern Double