I typically use grain players with short snippets of audio for looping sounds where I do not want an audible loop point. Imagine a rolling sound, scraping concrete, water running, wind, fire… you get the idea.
My initial approach yielded a gap in the audio playback of fmod. After contacting Brett from Firelight and trying a few things, I found the solution. It’s not the most intuitive solution, so it was worth noting it down for future use. As a matter of fact I came across the same issue a few months after the fact, and I could not remember how to do it !
In a Complex / Multitrack event, create 1 sound definition with all your grains.
Then set it to random/sequential etc playback mode, with max spawn time of [0,1] and a Maximum Polyphony of 2,
… then in the event editor right click on the sound def instance, and bring up sound instance properties (right click on the sound def in the layer. Change mode to ‘wait for previous’.
Wait for previous is set up for gapless joining so you can do granular synthesis this way.
That’s all there is to it ! I’ve added a few real time parameters for scraping to modulate the event for fun.
The project files also contains an event called Tones. This contains 3 different pure tones stitched together the same way. This is to ensure there is zero overlap between grains when using this technique.
Check it out by downloading the fmod test project below.
Happy Graining !