You basically need to set all (or almost all) of GranularSynth’s parameters in order to get any kind of sound out of it. Some experimentation is in order, but it pays off - when it works it sounds fantastic! But it needs to know stuff like grain duration, probability, envelope type and pitch; ADSR; playback speed…the works. It’s worth writing a function or macro that sets your GranularSynth from a struct of vars that you use like a preset, to keep that big string of setters hidden tidily away - or, even better, look into cloning and modifying the Modular Synth Preset Bank to use for the Granular Synth. I’ve asked our C++ programmers to do that for me, but it’s not at the top of their list of priorities at the moment
At the very least, I suspect that default play speed might be 0, as might grain pitch and grain duration. These three are pretty critical, and like I say, it’ll take a bit of experimentation before you hear usable results. Best thing is to map all params to a MIDI controller - I hooked up a cheap pad+knob controller (8 of each) and GranularSynth became an instant robot indigestion machine. Capture those incoming values and serialise ones you like and…voila, a preset! Having movement on some of those vars is the best way to exploit GS’s capabilities, which is why testing with physical knobs is a good way to explore what sort of things will work best for each different sample.