A feature of granulation is that each parameter can be accessed independently.
If we observe the grain patcher that we have so far constructed, we will notice that at the top the grain size parameter is stored into the sah~ object (in blue) and is waiting for the give way message from the phasor-envelope chain (envelope is produced by the wave~ object).
In a simple granulation system, these signals would then go and be added to the position in the file (sync-stored by another sah~ object) and then reach the play~ object to be played back.
It is at this stage that we can add a modification. We can access the position in the file as it comes out from the sample and hold (sah~) and modify its signal by multiplying it by different oscillators. In this case, I am using noise~, rand~, and cycle~. A selector~ object has been put there to make this choice.
The signal thus modified is then sync-stored again by an additional sah~ object, to then go back and be added to the grain size and reach, finally, the play~ object for playback.
The different oscillators, each accordingly to their own specific motion, move the position in the file at their specific speed (noise~ is uncontrolled, cycle~ and rand~ can be set to one) and by a specific amount.
For example, if the position in the file is set to 100 ms, and the oscillator used is cycle~, cycling over a 10ms amount, the position in the file will keep oscillating (at the speed of the frequency of the cycle~ object) between 90-110ms, that is around the centre position at 100 ms.
In this fashion, combining the action of the oscillators with the other parameters, many different effects can be achieved. And, of course, all these parameters too could be changed dynamically through actions, or in real time.
Try it!