Forums > MaxMSP

making a pulse like grain that is actually a waveform – Good or Bad idea?

Feb 09 2011 | 3:39 pm

Hi all,

Im making an instrument and I want to plug in a part that lets me choose from some list of existing waveforms.

It will be like a simple synthetic granular synth but for each grain I want to play around with a waveform (with adsr etc)

can anyone recommend which is better:

Sourcing a load of recorded samples that i can load in max (basic sine 1,2,3 basic saw 2 3 etc…… I assume loaded into a buffer or table)

or generating them manually via cycle, phasor etc etc

Ideally I want to have a waveform that is produced like a pulse each time a ‘new grain’ is requested/output with enough flexibility to modify the waveform in a simple adsr visual way with a slider perhaps.

the idea being that if i increase the period of the waveform i can do so by selecting a larger grain size – although this seems to sugget i would need to alter the existing sampled waveform

as you can tell im a little confused so any advice would be magic.

Feb 10 2011 | 7:24 pm

Well, I am no sure granular synthesis would be best suited
for this problem. There are a few things you need to consider…

A waveforms cycle is tied to its frequency. Tying the grain size
to 1/f would make for a very small grain.

This dependency means that increasing the grain size would also
lower the pitch.

What is the grain frequency? Is it the same as the wave form pitch?
Are these grains meant to be played randomly or serially?

It might be easier to use the object "waveform" to create the wave form
you want to use.

Feb 15 2011 | 2:35 pm

Hi Anthony, thanks for the advice. Unfortunately there doesn;t seem to be a way to get the ‘waveform’ object to work in max5. I can use the analogue~ object but i dont see how it creates real waveforms rather it lets you view a sample in a buffer.

What I really want is this:

Synthetic synthesis where n pulses/grains are produced (user defined amount) and I would like to have control over that grain (grain length, spatial location etc)

There are some granular objects around but they all seem to act as granulators of a sound file.

So either I go down the road of using sound files or I keep trying to find a true synthetic granular synth.

What I really need would be a grain scheduler object- how many, how big, how often, with what parameters etc

So far I can generate various ‘clicks’ using various objects like train~, cycle~, phasor~ etc etc and also some promising objects simply wont work in max 5,

I am designing a Cellular Automata based synth where the amount of ‘life’ the CA exhibit will represent the amount of grains (but I would still need to have parametric control over the grain ‘shaping’ (hence my strange isea to try to generate waveforms rather than grains – but as you have pointed out the freq dependent on period snag applies

There has to be a way to do this I’m sure I just can;t work out how….
Any avice would be much appreciated

Feb 15 2011 | 5:30 pm

i would do that with standard objects, it will be still less work to just
fill up a buffer with 8 custom created waveforms, and then write them
into the buffer one by one.

i also think you should not overestimate the result of this kind of
synthesis. most combinations will sound almost as just layering the
basic waveforms – plus some rectangular distortion.

Feb 15 2011 | 10:03 pm

Cheers for the advice Anthony and Roman

Its definately going to sound a little uninteresting at first but I need to have made the instrument simplistic to make sure I know how it all works and is connected together.

All part of the research/;earning process I’m hoping

I’ve looked into Granular synthesis quite a bit but implementing what I want in Max is proving trickier than I first hoped (lol what did I expect!)

The sort of instrument i wish to design would be a true synthetic granular synth.
I have looked into a few that work with MAXv5 (the majority of which granulate a sound file)

I guess the pertinent question to ask is what would make a sensible sound for an individual grain in MAX?

I have looked at using the train~ object to give me short pulses of sound as well as the ‘Granular ToolKit’ with grain.pulse, grain.pulse,, and grain.bang. (these all again work with sound files

My best guess for how to make the instrument would be to create many short ‘pulse’ like grains (1 pulse per grain) and use some sort of controllable randomisation factor to produce more interesting textures. A choice of window for each grain perhaps to shape it.

Christopher Keyes’ ‘Granular Cloud Generator’ is the best granular synth I have found so far (automation controls, randomisation, pitch correction, grain attributes, fx etc – its great

If I could work out how he generates a single grain in detail i might get somewhere but its going to take some time

Feb 15 2011 | 11:53 pm

I kinda agree with Roman on this, the result you get may not
equal the effort it would take to implement it.

I think your best bet is to use an audio buffer and create the
grain in memory yourself. You can do this with "poke" and "peek".

That way you could control the number of cycles independently of
the grain length. You would then want to apply the grain envelope on your waveform grain.

The tricky part is how to assemble these grains into an audio stream…
Perhaps you could implement some double buffered output stream that
gets read with play~.

Feb 16 2011 | 12:30 am

The more i think it through the more i realise you guys are right

I have been put off by the idea of granulating a sound file, when by using a sound file in the buffer I can still select sample position, window + guassian, blackman etc, and other controls that give me….a granulised sound file, but output as a single grain, with plenty of controls to shape it

(Slap round the back of head)

@Anthony – your right getting to the finished instrument is going to be fun and challenging but getting the streams themselves to sound interesting in different ways will take some tinkering. I like the double buffer output stream idea already,…lol im going to be addicted to MAX when I finish this project for sure

Thanks for your help guys, The whole thing is much MUCH clearer in my head now


Feb 16 2011 | 1:31 pm

The idea is good. There was even a synthesis method based around that idea, published in 1978, called VoSim. It was able to synthesize voice like sounds, as the shape of the pulse would create formants.
As for the granular part of your idea, I would keep the envelope for the grains simple: attack, sustain, decay, with attack and decay having the same length. The typical duration in granular synthesis is too short, to make more complex envelopes perceivable.
I would first play around with VoSim only. It might already give you so much control over the sound, that a granulation does not add much. The original granular synthesis was based around the simplicity of the oscillator, but your oscillator is already complex…
Keep us posted…

Feb 16 2011 | 2:32 pm

Ali, you may want to look into a book called Microsound by Curtis Roads.
It gets in to great detail on how to do synthesis using sound particles. He also discusses a technique called pulsar synthesis. It might be a good source
of ideas for you.

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

Forums > MaxMSP