A little testing- with a video!
Overall things look pretty good. The pitch detection seems to work reasonably well, with a few hiccups here and there. It even works with a real instrument, which is something I was a little concerned about. I'm still messing around with the sample rate and some algorithmic changes to get the best possible performance.
The most significant thing I've been considering tweaking is weighting the values from the FFT. Right now, it takes a bunch of samples, then performs an FFT on them. From there, it finds the peak frequency bins. The reported frequency is based on the weighted average of that peak, plus its two neighbors (weighted by the FFT output value). Adding additional weighting constants, or squaring the weights, or something else might produce a better result.