BiquadFilterNode: Q 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

BiquadFilterNode 接口的 Q 属性是一个 a-rateAudioParam,它是一个双精度浮点数,代表 Q 值,或称品质因数

一个 AudioParam。它的 defaultValue1,其 minValuemaxValue 为 ±(2128 - 2104),或约 ±3.403e38。这是单精度浮点数的范围。

其实际值范围取决于滤波器的 type

  • 对于 lowpasshighpassQ 值被解释为 dB。对于这些滤波器,值范围是 [-Q, Q],其中 Q 是 10Q/20 不会溢出上述边界的最大值。这约等于 770.63678。
  • 对于 bandpassnotchallpasspeakingQ 值与滤波器的带宽相关,且应为正数,但没有比上述更严格的最大值。
  • 它不用于 lowshelfhighshelf 滤波器。

注意:虽然返回的 AudioParam 是只读的,但它所代表的值并非如此。

示例

以下示例展示了使用 AudioContext 创建 Biquad 滤波器节点的基​​本用法。有关更完整和实际的应用示例/信息,请查看我们的 Voice-change-O-matic 演示(相关代码请参见 app.js 的 108-193 行)。

js
const audioCtx = new AudioContext();

// Set up the different audio nodes we will use for the app
const analyser = audioCtx.createAnalyser();
const distortion = audioCtx.createWaveShaper();
const gainNode = audioCtx.createGain();
const biquadFilter = audioCtx.createBiquadFilter();
const convolver = audioCtx.createConvolver();

// Connect the nodes together

source = audioCtx.createMediaStreamSource(stream);
source.connect(analyser);
analyser.connect(distortion);
distortion.connect(biquadFilter);
biquadFilter.connect(convolver);
convolver.connect(gainNode);
gainNode.connect(audioCtx.destination);

// Manipulate the Biquad filter

biquadFilter.type = "lowshelf";
biquadFilter.frequency.value = 1000;
biquadFilter.gain.value = 25;

biquadFilter.type = "peaking";
biquadFilter.frequency.value = 1000;
biquadFilter.Q.value = 100;
biquadFilter.gain.value = 25;

规范

规范
Web Audio API
# dom-biquadfilternode-q

浏览器兼容性

另见