Dear all, I find it quite hard to achieve in Tidal something that is very easy otherwise: change parameters of some effect (say, delay time, band pass filter frequency) while a (long) sound from a sample or instrument is playing.
For example: Let’s say I want to change the panning (left - right) while playing sitar.
let sample = s "sitar" # end 0.226 -- cut to length of one cycle
d1 $ sample # pan "[0 1]*4" -- does not work, it's the same as .. # pan 0
d1 $ sample |>| pan "[0 1]*4" -- does pan, but re-triggers each 1/8
Is there a sound parameter (to be used in a ControlPattern) that says “just keep playing”?
There is one work-around:
d1 $ (chop 8 $ sample) # pan "[0 1]*4"
but it’s fragile: first I needed to find the 0.226 above, and then the number on the left (8) must be a multiple of “2*4” on the right.
Chopping does not work for synths, e.g.,
d1 $ ( chop 8 $ s "superpiano" ) # pan "[0 1]*4"
There’s another work-around that works for some effects (not pan):
do
d1 $ s "superpiano"
d2 $ room "[1 0]*4" # orbit 0 -- this is the piano's orbit
This does not work for bpf.
PS: I’m really missing the feeling of turning the “D.TIME” knob on my https://www.boss.info/us/products/dd-3/ (which will change frequency, since it’s playing the previous contents of its store at the current rate). I recently had botched my Supercollider install (plugins not working) so when I started TIdal/SuperDirt I got some non-standard delay (which one?) that seemed to do exactly that…
I believe this is a limitation on how Tidal represents sound events. I don’t think it’s possible to modulate a parameter of a running synth from Tidal, because every event on Tidal starts a new Synth node on SuperCollider.
I made this extension as a workaround. It’s kinda messy because it sets parameters to all synths playing on a whole orbit, but it might work for you.
Ah I didn’t know about this extension of yours @munshkr, nice! I guess this is similar to the midi-style model, which is based on a piano with pedals which effect the whole instrument and not a particular note that is playing. Indeed another approach is to use midi for everything, where cc messages can be manipulated independently from note messages.
Fundamentally, the problem is that tidal only sends trigger messages.
However, I did make a semi-working prototype (with classic dirt, not superdirt) that allows d1 $ sound "longsound" # someeffect "0 3 4" to work. So I think it’s possible in principle without resorting to the midi-style approach where everything has to be a global effects…
Another, potentially more difficult problem is with Tidal’s representation of pattern. In Tidal there are different reasons for an event being cut into parts, only one of them being that an event parameter is being mutated. Tidal’s pattern type needs to take account of this, which needs some deep thought…
Also the relationship between the duration of an event and duration of a sound is not clear, especially with samples rather than synthesised notes.