It’s a really simple problem: I have a granular SynthDef that I control from a really speed Task - this speed, of course, is what produce the grain texture that I want to keep. Ex:
x = Task ......
0.02 + 0.1.rand.wait;
I would like to be able to change the main frequency inside this SynthDef, but with a really low scale, independently of the Task timing, such as, for example:
freq = Demand.kr( Impulse.kr(0.1), 0, Dseq([ .....],inf));
As each Task/inf.do play a new SynthDef, I know there is an obvious misconception in this setup to reach this goal.
Does it mean that I have to proceed on the server side only ( for example putting the Synth UGen inside GrainIn.ar and using trigs as a replacement of the Task ) ?
What are the possibilities?
Thanks a lot
The Synths could read the frequency from a bus where you playing the data, with a Synth with Demand or Pbind, as you prefer.
In general there’s nothing wrong in combining several layers of triggering, on the contrary, I find it’s an interesting granulation strategy. If you do fast triggering with tasks, then go sure to use makeBundle, otherwise you get bad timing (explained here: https://doc.sccode.org/Guides/ServerTiming.html). That’s one reason why it’s more comfortable to use Patterns than Tasks because they are bundling by default, though, it’s also a matter of taste. As a result of the client-server distinction there’s a great variety of possibilities to do granulation in SC, impossible to list all. I tried to collect some strategies in miSCellaneous lib’s buffer granulation tutorial. Not contained in there: the great ressource of Pspawner, which is exactly suited for a multi-level granulation approach, as you’re dealing with.
0.02 + 0.1.rand.wait
You might rather want to have this ?
(0.02 + 0.1.rand).wait