Microsounds AFAIK seems to be the comprehensive text on granular synthesis. I don’t know how much has changed since it was written.
If you didn’t know already, the granular engine in the Neb uses Partikkel, which is a very intimidating Csound opcode:
From the manpage:
partikkel was conceived after reading Curtis Roads’ book “Microsound”, and the goal was to create an opcode that was capable of all time-domain varieties of granular synthesis described in this book.
There’s a few other granular opcodes in Csound, which are in the bottom of the partikkel page listed above. Some of them are still pretty great to work with. For instance, I know the artist BT swears by the granule opcode:
I think granular synthesis is most often associated as being some form of sampling, but early on (1984), granular synthesis was used to generate human-sounding singing in a process known as FOF. To me, it seems like such an unlikely use for granular synthesis, which is why it is my favorite flavor of granular synthesis (also I have a soft spot for speech/singing synthesis).
The most efficient implementation I know of is the FOF opcode founnd in Csound:
You can read about the FOF algorithm from the description of the original CHANT program:
The approach above uses a sync table-lookup oscillator, but another approach is to use filters. A friend of mine did just that in FAUST, and his implementation is now part of the standard FAUST library:
He wrote a paper on his FOF implementation as well: https://ccrma.stanford.edu/~mjolsen/pdfs/smc2016_MOlsenFOF.pdf
SC has a FOF implementation too apparently.