У меня следующая проблема: я анализирую аудиоданные с помощью javascript и FFT. Я уже могу записать данные БПФ в массив:
audioCtx = new AudioContext();
analyser = audioCtx.createAnalyser();
source = audioCtx.createMediaElementSource(audio);
source.connect(analyser);
analyser.connect(audioCtx.destination);
analyser.fftSize = 64;
var frequencyData = new Uint8Array(analyser.frequencyBinCount);
Каждый раз, когда я хочу получить новые данные, я звоню:
analyser.getByteFrequencyData(frequencyData);
Переменная «аудио» — это mp3-файл, определенный в HTML:
<audio id="audio" src="test.mp3"></audio>
Все идет нормально.
Теперь моя проблема в том, что я хочу проверить, включает ли текущий массив «frequencyData» определенную частоту. Например: я размещаю сигнал 1000 Гц где-то в mp3-файле и хочу получить уведомление, если эта часть mp3-файла в данный момент находится в массиве «frequencyData».
На первом этапе это помогло бы мне решить проблему, когда важная часть mp3-файла содержит только сигнал 1000 Гц. На втором этапе я также хотел бы найти часть, если есть наложение с музыкой.