Я разрабатываю приложение для анализа звукового спектра в реальном времени в Linux на С++ и использую БПФ для расчета величин. Приложение получает звук с простого дешевого микрофона, подключенного к ПК.
Я попытался протестировать приложение с помощью онлайн-генераторов звука, просто воспроизведя сгенерированный звук на динамиках, и заметил, что оно всегда показывает половину частоты воспроизводимого звука. Например. если я генерирую звук 440 Гц, он определяет его как ~ 220 Гц.
Сначала я подумал, что просто сделал какие-то неправильные расчеты, но потом попробовал протестировать другие приложения, которые могут измерять частоту (например, gtkguitune). И я заметил то же самое! Даже эти приложения всегда будут отображать только ~ половину Гц фактического звука, генерируемого динамиками.
У кого-нибудь есть объяснение, почему это может быть?