Granular synthesis
Hi, i'm trying to make an instrument in Max similar to what I've done in Csound. As I've just started with max i'm really confused with how the program works and son.
I want to play several grains that will overlap each other. What I managed so far ist do play grains with a short interval between each grain. However it does not overlap, it's just one after another. Metro sends a new bang and interrupts the play of the currant grain and starts a new grain. So to sum up, i'm able to make lot's of short grains one after another, but I don't manage to play grains longer than the interval set in Metro object.
Another question: Is there a way to read the size of a Sample in Max? The buffer object shows how long the buffer is when we double-click it, but I need the data for the patch. Does anybody know how?
all the best
Celso
Hi
I'm afraid I can't look at your patch right now, but here is my approach to this, derived from common practice in granular synthesis/playback. Using a single phasor ramp we derive a curved window (via a cosine function or a windowing table), then we simply offset that ramp, via + 0.5 --> % 1.0, and then create another window. This offset produces a second ramp and window that is 180% out of phase with the first.
The [info~] object (named for the buffer you are using to read a sound file) will give you lots of, ahem, info regarding the named buffer, including file length in milliseconds.
Check out my old "Granary" patch, which is floating around on the Project page here.
HTH
Brendan
. . . . and anecdotally, I have found that using control rate objects like [metro] to trigger grains can become unreliable at high frequencies and/or numerous grains; try to stay in the signal domain, and gen~ is really good for this)