Two layers of speed?


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 =, 0, Dseq([ .....],inf));


Pbind.... Pseq([....],inf);
\dur, 10

As each Task/ 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 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: 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.

Another point:

0.02 + 0.1.rand.wait

You might rather want to have this ?

(0.02 + 0.1.rand).wait