Мне тут в голову идея пришла - вместо того, чтобы разбирать сигнал по гармоникам, просто находить примерно одинаковые участки сигнала, и считать время между ними. Идея сырая, но, думаю, можно реализовать в случае тюнера, например. Хотя там, скорее всего, просто подсчет времени между двумя фронтами, с подавлением гармоник фильтром, и ограничителем - где-то видел такую схему, на АВР-ке и ОУ