Lo que dices puedes implementarlo de este modo:
s.boot;
b = Buffer.read(s, "sounds/a11wlk01-44_1.aiff")
SynthDef("grain", {arg buffer=0, startPos=0.0, d=0.05;
var env = EnvGen.ar(Env.sine(d, 1), 1.0, doneAction: 2);
var synth = PlayBuf.ar(1,buffer, 1, 1, startPos, 0)*env;
OffsetOut.ar(0,Pan2.ar(synth, 0))
}).memStore;
Pbind(
\instrument, \grain,
\delta, Pwhite(0.05, 0.1),
\d, 0.1,
\startPos, Pwhite(0, b.numFrames)
).play;
delta - define el tiempo entre que se reproduce un grano y el siguiente.
d - define la duración del grano
startPos - define la posicion (en Frames) dentro del buffer desde la que se extraerá el grano
Pwhite genera números aleatorios comprendidos entre los dos parámetros dados siguiendo una distribución lineal, puedes probar con otros como Pgauss, o Pexprand que generan números siguiendo otras distribuciones de probabilidad (en este caso gausiana y exponencial).
Puedes generar números aleatorios para la duración del grano. También puedes controlar otros parámetros como el rate del sample, o el panning para espacializar los granos entre 2 o mas altavoces, o también modificar el tipo de envolvente... las posibilidades son infinitas
.
Creo que con esto mas o menos respondo a tu primera pregunta. En cuanto a las otras 3 depende de lo que quieras, experimenta con distintos valores y evalúa los resultados, no existen valores predefinidos. En el libro Microsound encontraras consejos e ideas.
espero haberte sido de ayuda
en cuanto al netlabel me alegra de que te guste! puedes ponerte en contacto con nosotros mediante el email que indica en la web y te voy contando.