Spec-Zone.ru › Web APIs

BiquadFilterNode: метод getFrequencyResponse()

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

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

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

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

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

Синтаксис

getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput)

Параметры

frequencyArray

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

magResponseOutput

Массив Float32Array для получения вычисленных значений амплитуды частотной характеристики для каждого значения частоты в массиве frequencyArray. Для любой частоты в frequencyArray, значение которой находится вне диапазона от 0,0 до sampleRate/2 (где sampleRate — частота дискретизации AudioContext), соответствующее значение в этом массиве равно NaN. Эти значения без единиц измерения.

phaseResponseOutput

Массив Float32Array для получения вычисленных значений фазовой характеристики в радианах для каждого значения частоты во входном массиве frequencyArray. Для любой частоты в frequencyArray, значение которой находится вне диапазона от 0,0 до sampleRate/2 (где sampleRate — частота дискретизации AudioContext), соответствующее значение в этом массиве равно NaN.

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

Ничего (undefined).

Исключения

InvalidAccessError

Предоставленные три массива не имеют одинаковой длины.

Примеры

В следующем примере мы используем биквадратный фильтр для потока медиа (полную демонстрацию см. в нашем примере с потоком-буфером или исходном коде.) В рамках этой демонстрации мы получаем частотные характеристики этого биквадратного фильтра для пяти частот дискретизации. Сначала мы создаем необходимые массивы 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>Biquad filter frequency response for:</p>
<ul class="freq-response-output"></ul>
const freqResponseOutput = document.querySelector(".freq-response-output");

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

const biquadFilter = audioCtx.createBiquadFilter();
biquadFilter.type = "lowshelf";
biquadFilter.frequency.value = 1000;
biquadFilter.gain.value = range.value;

// …

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

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

calcFrequencyResponse();

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

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

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
getFrequencyResponse 17 12 25 15 6 18 25 14 6 1.0 4.4.3

См. также

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

© 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/BiquadFilterNode/getFrequencyResponse

Spec-Zone.ru

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