Amount of randomness over time/deconstruct synthdefs?


I am working on some music that is a basic drum loop with bass and keyboard synthdefs.

What I would like to do is either have the synthdefs that I’ve created be modified into their final state over time OR have the arguments set to some amount of randomness in the beginning and eventually reach their final state. The first one seems more compelling, but I thought the latter might produce more interesting results.

For example, if I had a VERY basic kick drum synth, it might start as a sine wave and white noise with an amplitude envelope, then the sine wave gets pitched down and eventually has an envelope modulating its pitch and the noise source eventually becomes shorter so it’s just part of the attack transient.

I hope that’s at least somewhat of a clear question. I couldn’t seem to find anything in the forum or I didn’t know what to search for that might be related so apologies if this has already been addressed.

You might try a variation of a technique I use sometimes…

Use the SelectX or SelectXFocus UGen to fade smoothly between an array of signals in your Synth. Then, iteratively process your initial signal so each element of the array has the next layer of processing. Simple crossfading between signals can be a bit boring, so you can also add some dynamism by varying each signal according to the index you’re using in your SelectX (you can use .linlin to easily scale the index to a ugen parameter range). A quick example (typing on my phone so it’s simple, and sorry for any mistakes :slight_smile: ):

index = \, spec:[0, 3]);

sig1 = * env;
sig2 = sig1 + (env *, index.linlin(0, 2, 400, 3000)); 
sig3 = sig2 +, 1, 1/40, index.linlin(1, 3, 0.1, 0.4));

sig =[sig1, sig2, sig3], index);

Thanks! I’ll give this a go tomorrow for sure. Does this run each of the Ugens separately like the regular Select would?