@Kop3t3

Как определить частоту звука «на лету» с микрофона (Android)?

Всем доброго времени суток.
Есть устройство на базе платы Arduino, подключённое к телефону на Android в гнездо для гарнитуры.
Устройство опрашивает датчики, и при получении сигнала посылает в телефон писк определённой частоты длиной 50 мсек. Подскажите способ узнать текущую частоту (или уровень громкости для заданной частоты) средствами Android SDK, или (желательно) нативно на c++. Если есть варианты под Linux, стоит alsa.

Заранее спасибо.
  • Вопрос задан
  • 7827 просмотров
Решения вопроса 1
ntkt
@ntkt
Потомственный рыцарь клавиатуры и паяльника
Задача на самом деле формулируется так: надо получить спектр мощности входного сигнала (при помощи БПФ от оцифрованных сэмплов), дальше в нем выделить основную частоту с ее амплитудой, и не перепутать ее с ее гармониками с меньшими амплитудами (а они будут мешать). В целом примеров кода по запросу android get input frequency Вам попадется много, но, чтобы заставить их работать, надо хотя бы минимально владеть используемым мат. аппаратом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Может стоит как то по-другому организовать общение адруинки с телефоном? Преобразование фурье - весьма процессороемкая операция +возможны всякие шумы и прочее.

Как альтернатива - если вам надо просто передать какое то состояние - кодируйте его либо длиной сигнала, либо даже бинарным вариантом посылайте: 0 - есть звук, 1 - нет звука, а потом декодируйте.
Ответ написан
Комментировать
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы