
Ê











																				 	  GRANULAR SYNTHESIS 1.0
																								©1995 Michael Norris
																							Wellington, New Zealand

																					**	A SoundEffects Module **

This module takes your selected sample, and creates a new channel containing your sound which has been time-granulated. It does this by creating small quasi-Gaussian enveloped grains, which it then iterates, each time taking the grain at successive intervals from the original sample. 

Most of the ideas in this module are taken from Curtis Roads' article in the book "The Foundations of Computer Music", with some fairly liberal interpretation on my part. I've noticed that vocal sounds work well, but try experimenting with as many different sources as you can sample. Here are the parameters:

¥ New Length : Length of new sound to generate. Try stretching your sound anywhere from twice to 30 times its original length, or more!

¥ Initial Grain Length : The length of grains to start with. Best results are in the range from 0.01 - 0.04 seconds. Experiment with this factor.

¥ Final Grain Length : Length of grains to end with.

¥ Variance : The amount of randomness with which the computer chooses the grain length. According to Roads, this is useful in avoiding a particular spectral 'hum' of granular synthesis, and he suggests a value around 0.002 seconds, though I find this actually distorts the sound quite considerably. Experiment.

¥ Curvature : The value of curvature with which the computer tweens the initial and final grain lengths. This is explained in the "Sample Hose" read me, but basically 0% is convex, 100% is linear and 200% is concave.

¥ Initial Density : The density of grains in a given time unit. A value of 75 would indicate the only 75% of grains are created. 

¥ Final Density : The density of grains at the end of the new channel. By tweening between two different density values, Roads believes you should be able to get sounds that 'materialise' or 'dissolve', though in practice this is not especially convincing. This could work at low gain levels, I suppose.

¥ Curvature : The curvature of the density tweening. (again 0 < x < 200)

¥ Fade Level : With a value of 100%, the formula y =1 is used as the grain envelope function, and with the value of 0%, the formula below is used. For best resolution, I suggest values between 0% and 20%, although other values can have interesting 'artifacts' as a result of not enveloping the grain, which may be used to your advantage.

---

For those that are interesting in my grain envelope, the formula being used is:

Ê








where: y is the instantaneous gain at x (0 <= y <= 1)
					 x is the offset from the start of the grain (0 <= x <= n)
					 n is the length of the grain in some arbitrary unit.

This produces a nice shape similar to the 'truncated curve' Roads suggests as being a compromise between a Gaussian curve and rectangle:

Ê











(Here n = 5)


Thanks to Alberto Ricci for his guidance.

Any comments, questions, suggestions or general bug-fixes:
email to... mnorris@sans.vuw.ac.nz
