Lots of small but important changes to undertone detection:
- When comparing peak amplitudes, compare interpolated peaks, not raw bins.
- Find the best candidate bin _before_ sliding up or down one bin.
- Verify that a candidate bin is indeed a local peak before testing it.
- Remove some pointless out-of-bounds checks.
- Formatting changes to undertone debug printouts.
- Change the undertone limit from 10dB to 20dB.
Seems to work quite a lot better, especially for the low E string.
It's still not perfect, of course, and I'm sure there are regression
situations, but I think it's a significant improvement.