Spec-Zone.ru › Web APIs

IIRFilterNode: метод getFrequencyResponse()

Базовая Широкодоступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Метод getFrequencyResponse() интерфейса IIRFilterNode принимает текущие настройки алгоритма фильтрации и вычисляет частотную характеристику для частот, указанных в заданном массиве частот.

Два выходных массива, magResponseOutput и phaseResponseOutput, должны быть созданы перед вызовом этого метода; они должны иметь такой же размер, как массив входных значений частоты (frequencyArray).

Синтаксис

getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput)

Параметры

frequencyArray

Массив Float32Array содержащий массив частот, заданных в Герцах, которые вы хотите отфильтровать.

magResponseOutput

Массив Float32Array для получения вычисленных значений амплитуды частотной характеристики для каждого значения частоты в массиве frequencyArray.

phaseResponseOutput

Массив Float32Array для получения вычисленных значений фазовой характеристики в радианах для каждой частоты в входном массиве frequencyArray.

Возвращаемое значение

None (undefined).

Исключения

NotSupportedError DOMException

Выбрасывается, если три предоставленных массива не имеют одинаковой длины.

Примеры

В следующем примере мы используем IIR-фильтр для потока медиа (для полного примера см. наш демо-приложение stream-source-buffer в режиме реального времени или код).

В рамках этого демо-приложения мы получаем частотные характеристики этого IIR-фильтра для пяти образцовых частот. Сначала мы создаем необходимые объекты Float32Array, один содержит входные частоты, а два — для получения выходных значений амплитуды и фазы:

const myFrequencyArray = new Float32Array(5);
myFrequencyArray[0] = 1000;
myFrequencyArray[1] = 2000;
myFrequencyArray[2] = 3000;
myFrequencyArray[3] = 4000;
myFrequencyArray[4] = 5000;

const magResponseOutput = new Float32Array(5);
const phaseResponseOutput = new Float32Array(5);

Далее мы создаём элемент <ul> в нашем HTML для отображения результатов и получаем ссылку на него в JavaScript:

<p>IIR filter frequency response for:</p>
<ul class="freq-response-output"></ul>
const freqResponseOutput = document.querySelector(".freq-response-output");

Наконец, после создания фильтра, мы используем getFrequencyResponse() для генерации данных ответа и размещаем их в наших массивах, затем перебираем каждый набор данных и выводим их в виде удобочитаемого списка внизу страницы:

const feedforwardCoefficients = [0.1, 0.2, 0.3, 0.4, 0.5];
const feedbackCoefficients = [0.5, 0.4, 0.3, 0.2, 0.1];

const iirFilter = audioCtx.createIIRFilter(
  feedforwardCoefficients,
  feedbackCoefficients,
);

// …

function calcFrequencyResponse() {
  iirFilter.getFrequencyResponse(
    myFrequencyArray,
    magResponseOutput,
    phaseResponseOutput,
  );

  for (let i = 0; i < myFrequencyArray.length; i++) {
    const listItem = document.createElement("li");
    listItem.textContent = `${myFrequencyArray[i]}Hz: Magnitude ${magResponseOutput[i]}, Phase ${phaseResponseOutput[i]} radians.`;
    freqResponseOutput.appendChild(listItem);
  }
}

calcFrequencyResponse();

Спецификации

Спецификация
Web Audio API
# dom-iirfilternode-getfrequencyresponse

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
getFrequencyResponse 49 14 50 36 14.1 49 50 36 14.5 5.0 49

См. также

  • Использование Web Audio API
  • IIRFilterNode
  • AudioNode

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IIRFilterNode/getFrequencyResponse

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API