В Web Audio API есть анализатор node, который позволяет вам получать данные FFT на аудио, с которым вы работаете, и имеет байты и плавающие способы получения данных. Байт-версия имеет немного смысл, возвращая то, что выглядит как нормализованный (в зависимости от значений min и max decibel) спектр интенсивности, при котором 0 не является компонентом звука в конкретном ящике частоты, а 255 - максимальным.
Но я хотел бы получить более подробную информацию, чем 8 бит, но с использованием версии с плавающей запятой дает странные результаты.
freqData = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(freqData);
Это дает мне значения между -891.048828125 и 0. -891, что соответствует тишине, поэтому оно как-то минимальное значение, пока я угадываю 0, эквивалентно максимальному значению.
Что происходит? Почему -891.048828125 значителен? Почему большой отрицательный тишина и нуль являются максимальными? Я использую неправильный FloatArray или есть неправильная конфигурация? Float64 дает 0 значений.