Not a DSP expect by any means, but I think you can do better pitch detection without using an FFT. Instead, you want something like auto-correlation:
If done in software then a simple implementation of autocorrelation is O(n^2). An efficient implemementation is O(n.log(n)) (it uses two ffts).