Вспомните, что такое звук. Это волна. В электронном виде это колебания либо от -X до X (идеальный синус), либо, в случае с аналоговыми входами Arduino, от 0 до 1023. Вы можете решить, какова максимальная частота, которую вы хотите определять, понять, какой интервал в микросекундах ей соответствует и делать в течение этого периода (а вообще считается, что этот период должен соответствовать частоте в два раза большей) замер количества смены значений от ~0 до определённого threshold значения. На основании этого вы можете делать предположение о частоте сигнала.
https://www.youtube.com/watch?v=SQFl9YpkZX0 (
source code). Это с точки зрения рационального мышления без какой-либо теории.
А ещё можно почитать о
преобразовании Фурье.