Yes, with gen~ you can work at the sample resolution directly. Take a look at the gen~.zerox and gen~.chopper examples for examples of measuring time differences in samples.
One issue will be determining what constitutes the onset of the sound. If you are working in a studio environment, that may be as simple as detecting when the (absolute or squared) amplitude of a signal goes over a threshold. A low-pass filter (running average) may be desirable to eliminate random differences in the input signals; a [mix] + [history] pair makes a simple running average filter (there’s an example of this at the bottom of the gen~.karplus_strong example).
You want to output a sample value 1 just as it goes over the threshold, and 0 for every other sample clock before and after, so take the threshold detection signal and pass it through [delta] -> [> 0].
Once you have onset detection per input signal, simply use it to capture the current value of a sample counter at that time. A [+= 1] object works as a sample counter. Capturing the value can be done with the [? ] operator.