Just learned about Cybrid yesterday and joined in here to chime in. Very impressed with what I've seen so far! I have some thoughts I wanted to share - more than I really have time for ATM, but we'll see how far I get.
First, discussion of hammer speed is something of a proxy, as I don't know of anything aside from the alpha piano that even measures based on the hammer. The "hammer" sensors I'm aware of are at the shank, or rather the flange. These move much slower than the hammer itself, and on the same order as the key, so in a certain sense, numbers for the velocity measurement end up quite similar to doing key-based sensing.
For relating actual velocity to something we see electrically, time to pass a defined distance of course gives us that. For "digital" sensors like the shutters used in the Kawaii ATX and NV, the distance is defined by the spacings of the shutter edges relative to the sensors, and resolution is limited by the rate at which you can sample the sensors. I recall reading, possibly in the ATX service manual, that Kawaii uses a 110kHz sampling rate, but without knowing the actual distance between sensors being measured, that number alone doesn't tell us that much. I do doubt that the measurement is limited to the few mm of hammer position between let-off and hammer strike.
With an analog sensor like the CNY70, we can of course fake the digital sensing approach with two comparators. Now the accuracy isn't limited just by the sampling rate, but it's also affected by the precision to which you can set the comparator thresholds. With the multiturn trim pots, this probably isn't too bad, but with a 8-bit ADC and soft-defined thresholds, the resolution of said thresholds is probably significant.
But using a multi-bit ADC only to compare against a few thresholds is throwing away information the ADC is conveying, and if we're then concerned about limits of resolution of what's left, well, to me that feels like throwing the baby out with the bathwater.
With ADC output available, just taking the difference between subsequent ADC output samples gives you a value for velocity. There are of course resolution limits, but the fact the velocity is continuous and won't change arbitrarily from one sample to the next lets you also filter that result to take advantage of prior samples too for a better estimate. Better yet, as you're watching the velocity from sample to sample, it's possible to detect when there's a sudden change and I would want to use the peak velocity before this change for the measurement.
Of course this is more computation for the controller to do, and the controller talking to the ADC needs to happen with a regular clock that doesn't vary with the controller's load. On the other hand, this should relax the sampling rate requirement, too. Hard to say which side wins.
Even if we wanted to stick to a 'comparator' based approach, we can do better by making use of the ADC output. If one sample is just below your threshold and the next one well past it, that's a different scenario from one sample being far below the threshold, and the next one just crossing it. In a sense, you can interpolate between ADC samples and find where you threshold lies between sampling instants. Again, this should allow relaxing the sampling rate, but at the expense of needing more computation. The interpolation actually requires a division but on the other hand, this only needs to be done twice per key event rather than every sample of every key.