Дело немного сложнее, чем вы можете ожидать.
Хотя существуют подходы во временной области (то есть подходы, которые работают непосредственно с данными PCM), обнаружение основного тона в частотной области будет более точным. Вы можете прочитать очень упрощенный обзор здесь .
Что вам, вероятно, нужно - это Преобразование Фурье , которое можно использовать для преобразования блоков вашего сигнала из временной области в частотную (то есть распределение частотного содержимого по заданному интервалу сигнал). Оттуда вам нужно будет проанализировать частотный спектр в этом блоке. Проблема еще более усложняется, потому что в общем случае нет лучшего способа вывести высоту из выборочного частотного спектра. Вышеупомянутая статья в Википедии должна дать вам основу для изучения этих алгоритмов.
Наконец, стоит отметить, что это действительно не зависящий от языка вопрос, если только вы не заинтересованы в чтении WAV-файле специально с использованием VB.NET.