Forums > MaxMSP

Multiple grain generators – is there an advantage?

January 4, 2014 | 5:34 am

I’ve been building a granulator of late, it’s nothing revolutionary but has been an interesting journey for me. The core of the oscillator is based on the tried and tested combination of two play~ objects with a Gaussian envelope.

It sounds great, but I’m now wondering how I could develop or expand it. Now, before building this I was using the (fantastic) grainstretch~ external by Timo Rozendal. It has an option of using multiple grains (2,4,8,16). I’m curious to how this works and whether it is worth me trying to implement. I’m presuming this option adds more grain generators mixed together at once? Am I right, is this a commonly used technique. If so, how does one go about windowing more than 2 sources smoothly.

Hope that makes sense! Let me know if not, I’ll try to explain it better.


January 4, 2014 | 1:45 pm

Hi
the only "penalty" I can think of is the obvious one: more voices = more CPU demands. Practically, you would want to assign unique phase-offsets (grain start) to each voice. Artistically, however, I can’t think of many granular playback, or granulation synthesis algorithms that emphasise fewer rather than multiple voices. Whether you’re pursuing rich dispersed grain clouds or smooth freezing and re-pitching, you’re probably going to need multiple voices. Only Jean Francois Charles, Monolake, and Timo Rosendal (I love making dangerous – and plain wrong – generalisations!! Please prove me wrong. Please) seem to have overcome this time-domain stretchy freezy granulation thing recently.

As a wild guess, I would suggest that Timo perhaps has a fixed number of voices, with unneeded voices turned off as required, rather than a truly dynamic voice number. Again, guesswork.

I’d like to see you’re own engine, if you’re happy to reveal.


January 4, 2014 | 1:46 pm

EDIT: 05-01-14

<code>

– Pasted Max Patch, click to expand. –

</code>


January 6, 2014 | 5:27 am

I’ll try to put something postable together – it’s all tied up with the interface at the moment which is… unusual. Happy to share it though, I built it by looking at the work of others, including your tutorial Brendan (which was helpful, thanks!) so it is probably not that different. I’ve some interesting phase modulation stuff and an unusual control system working though, so that may be of interest.

On the windowing side of things, to expand on my question a bit – if you have more grain generators do you then have more overlap with all of them playing at one time. See the (very crude!) attached picture which may help. Is this useful for smoother sounding granulation?

Attachments:
  1. Grains

January 6, 2014 | 10:18 am

Hi
The best recent advice I’ve got is to either use a global phasor outside the poly~, and use phase offsets as I described above, or to use one-shot ramps with similarly unique phases.

Subjectively at least, more overlaps sounds smoother. But handling those phase positions whilst also juggling numerous dynamic parameters has proved to be something of headache for me, simply because of my very limited experience in ‘classical’ programming and audio DSP.

I’ll try to post some examples soon

Brendan


January 6, 2014 | 12:31 pm

Hi
I just threw this together in twenty minutes, so it’s not annotated, but it demonstrates overlapping grain windows. Just change the voice# argument to poly~. I haven’t stress tested it yet, but perhaps best to avoid stupid numbers, like 200!

Brendan

Attachments:
  1. demo-phases.zip

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