Granular Osc - Rate, Pitch and Phasor~ Woes

Mark Durham's icon

This has got me stumped. My grain oscillator is suffering from pitch changes when I change the grain rate. I'm using vb.phasor0~ which I thought should not let this happen:

Would be grateful if anyone could take a look. It's stripped down as much as possible, but happy to explain the relevance of anything.

Mark Durham's icon

Strange... the forum won't let me paste the code in the question. Grrr.

Mark Durham's icon

Here it is the old way:

MD_Grain_Problems.maxpat
Max Patch
Mark Durham's icon

Anyone?? Still stick on this!

Dave Mollen's icon

Well, vb.phasor0~ solves it partly. Your copied phasor, which is 50% out of phase causes the pitch changes. This is because the copied phasor goes to its new speed mid-ramp.

You could try one-shot ramps like I proposed in this thread. But most of the time I would just go with the [phasor --> + 0.5 --> % 1] method coupled with a static grain rate. And when you want a variable grain rate you could also try one-shots with a [metro --> line~] triggered grain engine.

Mark Durham's icon

Thanks for replying, and thanks for replying to the other thread I brought up about this. I've just gone through all those - seems like you and Brendan covered this pretty exhaustively. It's a bit depressing as my granulator was going rather well! I might be able to live with the pitch anomalies on changing the grain rate I suppose.

I'll think about this and go through the options again. Can't help but think there must be a way round it. How about a system which uses a variable delay for the second ramp, controlled by sah~ when the first reaches 0. Maybe in gen~?

Mark Durham's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Just thought I'd throw this one in for anyone interested, combined vb.phasor0~ and shot~ solution. I'm still getting some pitch issues with it, but not quite as bad. Maybe it just needs tweaking.