2017-02-18 29 views
-1

Я прочитал MDN Article об AnalyserNode, а также попытался вырвать документы W3C. У меня есть рабочий код:Javascript AnalyserNode низкие частоты (бас)

Frequency Canvas

Но очень низкие «бас» частоты занимают только 5 баров или так .. Можно показать более низкие частоты более подробно?

+2

Код не может быть запущен с изображения, поэтому укажите свой код, а не изображение. –

ответ

0

Нет, не без использования более крупного БПФ для анализатора. Как математика работает в БПФ, бункеры распределены линейно; если вам нужна более подробная информация, вам нужно получить более подробную информацию по всему спектру частот (конечно, при соответствующей стоимости процессора).

1

@cwilso в основном правый.

Но вот альтернатива, которая получит то, что вы хотите (довольно) немного работы, анализа и мышления.

Lowpass фильтрует сигнал, чтобы получить низкие частоты, которые вас интересуют. Уменьшите сигнал. Сохраните этот сигнал в AudioBuffer. Создайте OfflineAudioContext с AudioBufferSource и AnalyserNode. Запустите автономный контекст и возьмите данные частоты из анализатора.

В качестве примера предположим, что контекст работает на частоте 48 кГц. Мы хотим уточнить частоты ниже 3 кГц. Итак, создайте фильтр нижних частот с отсечкой 3 кГц. (Использование одного фильтра IIRFilter или каскада нескольких фильтров biquad.) Возьмите отфильтрованное аудио и отправьте его в AudioWorklet или ScriptProcessor. Этот узел будет децитировать сигнал в 8 раз (48/(2 * 3)), сохраняя только каждый 16-й образец. Соберите достаточно данных и сохраните их в AudioBuffer с частотой дискретизации 6 кГц. Это прореживание приводит к сигналу с полосой пропускания 3 кГц при частоте дискретизации 6 кГц. Таким образом, интересная часть сигнала занимает всю полосу пропускания.

Теперь, когда у нас есть этот буфер, создайте автономный контекст с частотой дискретизации 3 кГц. В этом контексте создайте AudioBufferSourceNode, используя этот буфер, и передайте это в AnalyserNode. Получите данные частоты от анализатора. Если вы использовали, скажем, 1024 балла, каждый бит частоты теперь составляет 3 кГц/1024 или около 3 Гц в ширину. Вы уточнили низкие частоты.

+0

Я хотел бы получить более подробную информацию об этом подходе. Я все еще много разбираюсь в аудио, но у меня есть некоторые проблемы с пониманием ваших инструкций. – adamk33n3r

+0

А, мой ответ неверен. Он предназначен для очистки высоких частот. Я скоро обновлю его с лучшим ответом. –

 Смежные вопросы

  • Нет связанных вопросов^_^