$Page Grain Cloud Simpler $TargetName Grain Cloud Simpler *Making a grain cloud* This granular player re-synthesizes audio by replaying it in small fragments around a (moving) position. This implementation is optimized to play back a sample without artifacts when the parameters are set to default, and to gradually introduce artifacts when changing the speed and other settings. The engine makes sure that grains are not crossfading when notes are triggered, to make sure onsets of drums are left intact when triggered. It also has playback copies that can each have a different random position offset, which gives you a grain cloud effect. The patch is built from basic building blocks, allowing you to tinker with the calculations. Grain-Cloud-Simpler.png -> To create a cloud effect, you can speed down, increase the randomness and play with the grain size. The number of voices determines the density of the grain cloud, but note that more voices will use more of your CPU. -> This example implements a simple time stretching effect with only basic building blocks, providing insight into the type of calculations needed. -> The outermost [poly~] is not used for note polyphony, but to load multiple copies of the playback patch, so that they can have a random offset and create a cloud effect. -> The innermost [poly~] only has two voices, that are equal except for their phase offset. Each voice in this poly is active half of the time, fading in and out. -> Time stretching based on granular synthesis instead of frequency-domain pitch shifting means the device has no latency. Max also bundles an advanced time stretching feature, which does not provide access to the parameters needed to create a grain cloud effect, but which has less artifacts when changing playback speed. See the $Link Stretch Simpler example .