Thanks so much for this !!
It’s so straightforward, and seems CPU friendly as well.
Thanks so much for this !!
Glad I could share it! I’ve been surprised to see that it’s not frequently mentioned, as I think that it’s a spectacular toolset. There are a lot of really great finds in the Max Package Manager. Others to check out:
-MC Movement Studies. This is an inspiring collection of sequencing techniques and more. Dillon Bastan really has my attention lately between this and iota. There’s a really solid Cellular Automata sequencer in here that is fun to pair with microsound stuff.
-karma (by @rodrigo). Most of you know this one already, but it’s nice having it in the Package Manager. Not granular, but covers my sampling needs that petra doesn’t.
-ml.star. Machine Learning objects. There’s a very nice self-organizing map widget. If you build a granular tool, try training this with parameter sets for preset morphs.
-sensel. I’ve been preaching wherever I can about the Sensel Morph. It’s my favorite compact controller as I can carry a small pouch when I travel and have MPE, drum pads, etc. This allows you to tap directly into the sensor data, making it a great choice when building granular tools.
-smFilterPack. Really good sounding filters to add to your microsound explorations.
-ACToolkit. If you need a good granular noise source, the jeynoise~ object is very flexible. The built-in examples include a really unusual random VOSIM patch.
For some reason, when I search the package manager for “granular” only the LowKeyNW and MuBu packages show up.
I also really like the easing package.
Finally got round to looking at Petra on the back of this - really nice!
A nice easy addition for variable density clouds at signal rate (what I currently need):
This is interesting:
Has anyone spotted any real-time granular effects (ie like MI Clouds) made completely in Max, no externals?
Just trying to work out how to do that. Currently a poly~ based record then playback thing, where latency is record time. It at least works in my head…
The Beap Granular Oscillator is really nice! Controll it both with Cv and pattrforward
Edit it, add an output that outputs the name of the buffer so that you can easily record into it etc.
Not sure if this is an answer to me or not… but I’m specifically wanting to create a stream of grains on input (as an effect) rather than write into the buffer of a granular synth.
I’d assumed it can’t be achieved with a single buffer, but perhaps a circular one would work? Can’t see how the playheads and record head can avoid each other though.
@_mark Sounds like this might be an interesting patch to explore? It’s free too : )
I’ve never been able to build a good one without externals (or at least one that sounds close to as good as [munger~]). I got close trying to hack a Max version of the granular-delay module in Automationism/PD, but it didn’t work perfectly cause [tapout~] doesn’t work the same way as [delread4~]/[vd~]…
Thanks, that was. It is essentially a delay with random fluctuations in the feedback path - hence granular modulated delay/reverberator:
@analogue01 I didn’t know munger~ was a thing! That’s good to know.
In the mirror maze above they interestingly use delay~ instead of tapout~.
Beginners mind just sent me down the route of using a buffer~ to do this instead of a delay. It means a grain is always going to be delayed by the grain length, but would also let me do things like modulate grain playback heavily. Might just embrace the latency as I want to use it on a track as an effect, but not actually in a live way…
So, with a fair amount of noodling around I’ve put together this somewhat unusual real-time effect. I think it exists somewhere between delay and granulator - as it is designed to be clocked to tempo, but is really very granular at its core.
The idea is this:
Instead of spraying random grains around at random pitches, capture a grain then loop it to make a steady grain stream. Put an envelope on the stream and trigger those instead. For now, I’m calling these fragments, to separate them from the grain controls in the patch.
Within each fragment, there are actually three streams, and these can be different pitches (chords!). There’s a button to reverse the streams and a pitch multiplier that’s nicely playable. And I stuck a crude wow & flutter emulation on the input.
Have a go. You need to press play, and there are some presets:
Live Stream Frag Granulator.zip (23.1 KB)
I think this there are a number of possible directions for this, into more of an instrument. Does anyone have any cool ideas for it? I don’t have a grid, but I think the number of controls and liveness would lend well…
your idea for a patch looks great. Thanks for charing. I will check it out and if I got an idea I will post it here.
I’ve been getting some nice results from this patch. Here is a further audio example, this with three instances.
This is the audio going in, on loop:
This is the output:
The loop is playing into the first instance, then another two are in parallel after it. This hopefully shows the layering that is possible with this macro-scale granular approach.
The live stream granulator is dope! Also thanks a tom for the other hints (grainstretch) !!
RezerGranny.zip (68.9 KB)
This thread reminded me i’d never posted my own sample-accurate looper external for Max here before(after devving karma~ i created this, rezer~, to be a bit like karma~ but sample-accurate, plus other things…).
Here’s the thread about the object: Rezer~ - a new(ish) object for Max (+ more from raja)
But the .zip posted above has a patch where I hook it up real simply to create a granular engine with a windowing overlap of 2(i didn’t hook up the recording part, but since the object allows recording positions separate from playback, you can also use this for robust live-granular-processing easily). Try the “RezerGranny” patch above, opens up real self-explanatory-like to get you started. Cheers
Does anyone know of anyway to integrate a grid into a max granulator?
Grainfields might be worth looking at for one way to implement that
Hi mate! ppooll discord friend!