BiquadFilterNode - 表示一个简单的低阶滤波器

BiquadFilterNode 接口表示一个简单的低阶滤波器,它是使用 AudioContext.createBiquadFilter() 方法创建的。它是一个 AudioNode,可以表示不同种类的滤波器,音调控制设备和图形均衡器。一个 BiquadFilterNode 总是有一个输入和一个输出。

输入数量 1
输出数量 1
通道计数模式 "max"
通道数 2(在默认计数模式下不使用)
通道解释 "speakers"

构造函数

BiquadFilterNode()

创建一个 BiquadFilterNode 对象的新实例。

属性

从其父接口 AudioNode 继承了属性。

注意:尽管返回的 AudioParam 对象是只读的,但它们表示的值不是。

BiquadFilterNode.frequency 只读

一个 a-rate AudioParam 的 double 值,代表当前过滤算法中以赫兹(Hz)。

BiquadFilterNode.detune 只读

一个 a-rate AudioParam,表示频率的失谐,以 cents 为单位。

BiquadFilterNode.Q 只读

一个 a-rate AudioParam 的 double 值,表示是 Q factor(品质因子)。

BiquadFilterNode.gain 只读

一个 a-rate AudioParam,表示 gain,用于当前的过滤算法。

BiquadFilterNode.type

一个字符串值,用于定义节点正在实现的过滤算法的类型。

不同参数的含义取决于过滤器的类型(失谐具有相同的含义,因此不在下面列出)

type 描述 frequency Q gain
lowpass 标准二阶谐振低通滤波器,具有 12dB / 倍频程衰减。截止频率以下的频率通过;高于它的频率被衰减。 截止频率。 指示频率在截止频率附近达到峰值的程度。值越大,峰越大。 未使用
highpass 标准二阶谐振高通滤波器,具有 12dB / 倍频程衰减。截止频率以下的频率被衰减;高于它的频率通过。 截止频率。 指示频率在截止频率附近达到峰值的程度。值越大,峰越大。 未使用
bandpass 标准的二阶带通滤波器。给定频率范围之外的频率会衰减;它内部的频率通过。 频率范围的中心。 控制频段的宽度。 Q 值越大,频带越小。 未使用
lowshelf 标准二阶低架滤波器。低于频率的频率会增强或衰减;频率不变。 频率升高或降低的上限。 未使用 要应用的增强(以 dB 为单位);如果为负,则为衰减。
highshelf 标准二阶高架滤波器。高于频率的频率会增强或衰减;低于它的频率不变。 获得提升或衰减的频率的下限。 未使用 要应用的增强(以 dB 为单位);如果为负,则为衰减。
peaking 范围内的频率会增加或衰减。外面的频率不变。 频率范围的中部得到提升或衰减。 控制频段的宽度。 Q 值越大,频带越小。 要应用的增强(以 dB 为单位);如果为负,则为衰减。
notch 标准 notch 过滤器,也称为 band-stopband-rejection 过滤器。与带通滤波器相反:超出给定频率范围的频率通过;内部的频率被衰减。 频率范围的中心。 控制频段的宽度。Q 值越大,频带越小。 未使用
allpass 标准二阶 allpass 过滤器。它允许所有频率通过,但会更改各个频率之间的相位关系。 具有最大组延迟的频率,即发生相变中心的频率。 控制中频处的过渡程度。此参数越大,过渡越尖锐和越大。 未使用

方法

从其父接口 AudioNode 继承了方法。

BiquadFilterNode.getFrequencyResponse()

从当前的滤波器参数设置中,此方法将计算提供的频率数组中指定频率的频率响应。

实例

实例

以下实例显示了 AudioContext 创建 Biquad 过滤器节点的基本用法。有关完整的工作示例,请查看我们的 voice-change-o-matic 演示(请查看源代码

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();

// 设置我们将用于该应用程序的不同音频节点
var analyser = audioCtx.createAnalyser();
var distortion = audioCtx.createWaveShaper();
var gainNode = audioCtx.createGain();
var biquadFilter = audioCtx.createBiquadFilter();
var convolver = audioCtx.createConvolver();

// 将节点连接在一起
source = audioCtx.createMediaStreamSource(stream);
source.connect(analyser);
analyser.connect(distortion);
distortion.connect(biquadFilter);
biquadFilter.connect(convolver);
convolver.connect(gainNode);
gainNode.connect(audioCtx.destination);

// 操纵 Biquad 过滤器
biquadFilter.type = "lowshelf";
biquadFilter.frequency.setValueAtTime(1000, audioCtx.currentTime);
biquadFilter.gain.setValueAtTime(25, audioCtx.currentTime);

规范

规范 状态 备注
Web Audio API
BiquadFilterNode 的定义
工作草案 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持14≤1825 不支持156
BiquadFilterNode() 构造函数551≤7953 不支持422 未知
Q141225 不支持156
detune141225 不支持156
frequency141225 不支持156
gain141225 不支持156
getFrequencyResponse141225 不支持156
type141225 不支持156

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持18 未知26 未知14 支持
BiquadFilterNode() 构造函数554551 未知53 未知422 未知
Q 支持18 未知26 未知14 支持
detune 支持18 未知26 未知14 支持
frequency 支持18 未知26 未知14 支持
gain 支持18 未知26 未知14 支持
getFrequencyResponse 支持18 未知26 未知14 支持
type 支持18 未知26 未知14 支持

1. 在 Chrome 59 之前,不支持默认值。

2. 在 Opera 46 之前,不支持默认值。

3. 在 Samsung Internet 7.0 之前,不支持默认值。

4. 在版本 59 之前,不支持默认值。