IIRFilterNode: метод getFrequencyResponse()
Базовая Широкодоступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.
Метод getFrequencyResponse() интерфейса IIRFilterNode принимает текущие настройки алгоритма фильтрации и вычисляет частотную характеристику для частот, указанных в заданном массиве частот.
Два выходных массива, magResponseOutput и phaseResponseOutput, должны быть созданы перед вызовом этого метода; они должны иметь такой же размер, как массив входных значений частоты (frequencyArray).
Синтаксис
getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput)
Параметры
frequencyArray-
Массив
Float32Arrayсодержащий массив частот, заданных в Герцах, которые вы хотите отфильтровать. magResponseOutput-
Массив
Float32Arrayдля получения вычисленных значений амплитуды частотной характеристики для каждого значения частоты в массивеfrequencyArray. phaseResponseOutput-
Массив
Float32Arrayдля получения вычисленных значений фазовой характеристики в радианах для каждой частоты в входном массивеfrequencyArray.
Возвращаемое значение
None (undefined).
Исключения
-
NotSupportedErrorDOMException -
Выбрасывается, если три предоставленных массива не имеют одинаковой длины.
Примеры
В следующем примере мы используем 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();
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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