Forums > MaxMSP

how to best sync phasor~ objects? for granular synthesis

September 19, 2011 | 5:43 pm

Hi friends,

I’ve made a granular synthesis patch that uses phasor~ to read through an index. I’d like to have overlapping grains.

The issue was pointed out to me that if I use a phase offset to run an overlapping grain that the grain size must be fixed. I would like to have variable grain size.

I tried using two separate phasors and sync their phase using a click~ into their right inlets, but the synchronization wasn’t great. The phase offset version was markedly better sounding.

Does anyone have any ideas for how to retain this kind of sync and have variable grain size?

many thanks,
Nick


September 19, 2011 | 5:56 pm

Hi Nick,
the way I do it is with one central phasor running everything, and a 50% shifted window using [+~ 0.5]. Left outlet goes to [-~] (inLeft), right outlet goes to [>~ 1] and from there into [-~] (inRight).

A tutorial what I done:

http://www.youtube.com/watch?v=vbbhGV1PkY8

Brendan


September 19, 2011 | 6:47 pm

Nice one! Found your "sharegrain" earlier but not everything was clear to me. Couldn’t comprehend the single [thispoly] before but it think i do now.

Thanks for sharing (the patch and the video)

FRid


September 19, 2011 | 7:12 pm

@FRid
My ego leads me to assume you mean MY patch, haha! If so, the patch from the video (I occasionally ‘improve’ it) is below.

If not, have a chuckle at my expense :)

As for the single [thispoly~] – it’s a compromise: the summation of the two overlapping windows will never give me a 0. to set the busy/not busy state, so I just use one window for this. Not ideal, but that’s as far as my skillz take me, so…

Brendan

Attachments:
  1. shareGrainMk2.zip

September 19, 2011 | 7:43 pm

Yep, your ego was right. :)

Thanks for the update. I’ll check it out.

FRid


September 20, 2011 | 9:15 pm

Thanks Brendan – I learned a great deal from your tutorials!

I’m still struggling though because I want to be able to change the grain size without the pitch shifting. I already have the ability to randomize the start sample built in.. it seems like an impossible task..


September 20, 2011 | 10:04 pm

Hi Nick
I spent several months pounding this forum with exactly the same problem as you are having now (although I’m using [play~] to access my buffer, rather than [index~]). Using one [phasor~]-[play~] pair I was able to achieve independent control of grain size, pitch and offset. The synced and shifted phasor/play pair ‘reintroduced’ the pitch modulation (when changing grain size) because it is not possible to tie grain size to pitch as I did in the first algorithm. I can’t exactly remember why this is this case, but I spent a very long time trying to solve it. My meagre skills weren’t the barrier, as I had a lot of help from very skilled (and patient) forum contributors. What I can do is point you to the extensive threads I caused in relation to this problem; really hope it helps:

pt.1
http://cycling74.com/forums/topic.php?id=26110
pt.2

http://cycling74.com/forums/topic.php?id=27462

Brendan

ps; the pitch modulation in window 2 really only seems to be an issue when the grain size is large and moves in large increments; it’s less of an issue if the grain size is < c.100ms. As mentioned in the tutorial video, I solved this by fixing the grain size to around 80ms (/2 = 40ms) and then using the offset*noise amplitude to vary grain 'range'.


Viewing 7 posts - 1 through 7 (of 7 total)