С ограниченными ресурсами, такими как более медленные процессоры, размер кода и оперативная память, как лучше всего определить высоту музыкальной ноты, похожую на то, что сделает электронный или программный тюнер?
Должен ли я использовать:
- Kiss FFT
- FFTW
- Дискретное преобразование вейвлета
- автокорреляции
- анализ пересечения нуля
- фильтры с октавной разметкой
другие?
Вкратце, что я пытаюсь сделать, это признать одну музыкальную ноту, две октавы ниже середины C до двух октав выше, играемую на любом (разумном) инструменте. Я хотел бы быть в пределах 20% от полутона - другими словами, если пользователь играет слишком плоскую или слишком резкую, мне нужно это отличить. Тем не менее, мне не нужна точность, необходимая для настройки.