[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GrainUGens (was Re: [Sc-devel] adding UGens / classes)

Hi all...

I have just uploaded a UB build of 4 new grain ugens. You can get them here to test:


GrainIn - granulate input
GrainSin - sin grains
GrainFM - FM grains
GrainBuf - Buffer based grains

Still need to make the Env to Buffer methods, but give these a try. For the envelope, -1 gives a Hanning window, >= 0 expects a buffer with a windowing signal. numChannels can be 1 or more, and panning is similar to PanAz.



On Nov 30, 2007, at 10:16 AM, Julian Rohrhuber wrote:

I noticed something a little problematic with the grain ugens with Envs... they are NOT cheap. There is basically an EnvGen running for every grain, so as density goes up, so does the CPU by quite a bit. So, I wanted to see what others thought about this:

have an envbufnum parameter that
	: if < 0, uses the built-in window
	: if >= 0 uses a table in a buffer

Then, add a method to Buffer that stores an envelope to a the Buffer;


GrainSin(numChannels, trigger, graindur, freq, pan, envbufnum, mul, add);

a = Buffer.fromEnv(Env([0, 1, 0], [1, 1], \sin));

How does this sound?

sounds reasonable to me. This is useful also for other cases.
Maybe add an instance method sendEnv too.

actually it would be better to have one instance method of Env like:

discretize { arg n;

then you can write
Buffer.sendCollection(env. discretize)

Sc-devel mailing list

/* Joshua D. Parmenter

“Every composer – at all times and in all cases – gives his own interpretation of how modern society is structured: whether actively or passively, consciously or unconsciously, he makes choices in this regard. He may be conservative or he may subject himself to continual renewal; or he may strive for a revolutionary, historical or social palingenesis." - Luigi Nono