First time here? Check out the FAQ!

How to track when a GrainEnv is triggered in samplecloud/graincloud

0 votes

Dear fellow Kyma'ers,

First time posting a question here!

this is an edited, hopefully more focused, version of my original post.

I found out that what I need to know is : When/how is a GrainEnv triggered in the samplecloud/graincloud prototype, and how can I use this trigger for something else? I want to be able to generate a random number for !Angle in MultichannelPan, each time a GrainEnv is triggered. This way each generated grain has its own position in the circle. Is there a way to control the generation of each GrainEnv-trigger outside of the samplecloud/graincloud prototype? For instance, to generate a triggered GrainEnv only when a certain threshold has been reached, or with a BrownianGate (SoundtoGlobalController?


This was my original (confused) post :
I would like to know if there is a way to make a multichannel graincloud in which

1) each grain is separately randomly placed in one of n-amount of speakers (this n-amount should be a specifiable parameter), using MultichannelPan

2) the "amount" of randomness can be controlled, just as you can do with !PanJitter in the original graincloud, but in a 360° environment.

The effect I'm trying to attain is to have the possibility to expand & contract a sound in a spherical speaker setup. For instance : one repeating woodblock, coming out of the top-center speaker above your head (in a dome-like speaker config), is suddenly granulated over the other speakers. One parameter is necessary for the speed of the random-spatial-granulation and one parameter is necessary for the "spatial range" of the granulation - i.e. whether the woodblock sound is granulated and divided over only the speakers close to the original top-speaker, or for ex. the Radius changes, but the Amgle stays the same,  or the grains are dispersed over all the speakers in the space, making a huge spatial cloud of tiny woodblocks (with all the typical Freq & Dur parameters). Basically, to be able to smoothly shift from a tight, small sound, to a dynamically, wide, dispersed sound, with the possibility to smoothly adjust angle, distance and the broadness of the grainfield.

Replicating a graincloud doesn't have the same effect, as it doubles the amount of grains divided over 2-4-6-… channels, rather than dispersing the same amount of grains over multiple instead of 2 channels.

Hope this makes sense?

Thanks in advance!


asked Oct 15, 2018 in Capytalk & Smalltalk by koenraad (Practitioner) (330 points)
edited Oct 15, 2018 by koenraad

1 Answer

+1 vote
Best answer

When/how is a GrainEnv triggered in the samplecloud/graincloud prototype, and how can I use this trigger for something else

Hi Koenraad, you could use a Threshold on an AmplitudeFollower to detect when there is a grain. But looking at the larger picture, I think you might be better off constructing your own sample cloud using the Replicator on a single grain-generator. That way you could control the spatial location of each grain by channel number.

You might get some ideas on ways to get started on this by looking in the Kyma Sound Library/Controls & Data-driven instruments/random triggers.kym in the collection called 'grain clouds with different distributions'.

Let us know how it goes!

answered Oct 15, 2018 by ssc (Savant) (124,560 points)
selected Oct 17, 2018 by koenraad
Hi SSC, thanks a lot for the help! The second option seems the best one - quite a challenge. Will let you know how it goes.
These are the two things I came up with for an 8channel panner/granulator.

One Sound is based on the brownian grain cloud example. here it is :
Compared to a stereo-samplecloud however, it's very rough and unwieldy. I can't figure out how to get a time-index to control the sample playback - so that I can scramble the grains if I'd want to like the timeindexjitter in samplecloud. Also, when I increase the grainDur, I don't get nice, clean, long grains and smooth, slow panning, but clicky and phasey stacking of grains... Any suggestions greatly appreciated.

Second example is based on on the Granular Reverb prototype. So far this one's closer to what I'm looking for ( One thing I'd like to figure out is : how could I, with one fader going from 0 to 1, control how "broad" the granular cloud is in the 8-channel field? I'd need 1 Angle Control, to set where the default position would be, and 1 Fader to control how broad the grains are spatialised (with 0 being just one speaker, 0.125 being the original speaker plus the two adjacent ones, and 1 being all 8). I can't figure what I have to multiply with what in the MultichannelPan or replicator to not mess up the multichannelpan I've got working so far. My total lack of math-talent isn't helping either ;-)

Thanks a lot in advance for any suggestions!


Here is an example using the Replicator on a MultichannelPan on a GranularReverb that shows one way to have an Angle and Spread control for your grains.