If I simply read from these inputs at the top of the gen() function, the output will be read once every bufferSize number of samples ? If it needed to be audio rate, I would re-read them inside the sample loop as well. Reading is always done by inputs.grainLength.output[0], inputs.numGrains.output[0] ? The ugen will appropriately always move the right output at the 0-index at the right time? 
Do I understand this correctly?