IIRFilterNode: getFrequencyResponse() 方法
IIRFilterNode 介面的 getFrequencyResponse() 方法會獲取當前的濾波演算法設定,並計算指定頻率陣列中頻率的頻率響應。
在呼叫此方法之前,必須建立兩個輸出陣列 magResponseOutput 和 phaseResponseOutput;它們的大小必須與輸入頻率值陣列(frequencyArray)相同。
語法
js
getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput)
引數
frequencyArray-
一個包含頻率陣列的
Float32Array,頻率單位為赫茲 (Hertz),表示您想要過濾的頻率。 magResponseOutput-
一個用於接收
frequencyArray中每個頻率值的頻率響應計算幅度的Float32Array。 phaseResponseOutput-
一個用於接收輸入
frequencyArray中每個頻率值的相位響應計算值(弧度)的Float32Array。
返回值
無(undefined)。
異常
NotSupportedErrorDOMException-
如果提供的三個陣列長度不全相同,則會丟擲異常。
示例
在下面的示例中,我們正在對媒體流使用 IIR 濾波器(有關完整的演示,請參閱我們的 stream-source-buffer 演示),或 檢視其原始碼)。作為此演示的一部分,我們獲取此 IIR 濾波器的頻率響應,針對五個取樣頻率。我們首先建立所需的 Float32Array 物件,其中一個包含輸入頻率,另外兩個用於接收輸出幅度和相位值。
js
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);
接下來,我們在 HTML 中建立一個 <ul> 元素來包含我們的結果,並在 JavaScript 中獲取其引用。
html
<p>IIR filter frequency response for:</p>
<ul class="freq-response-output"></ul>
js
const freqResponseOutput = document.querySelector(".freq-response-output");
最後,在建立過濾器後,我們使用 getFrequencyResponse() 生成響應資料並將其放入我們的陣列中,然後遍歷每個資料集,並在頁面底部的可讀列表中輸出它們。
js
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 |
瀏覽器相容性
載入中…