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-stop 或 band-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 的定义 |
工作草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 14 | ≤18 | 25 | 不支持 | 15 | 6 |
BiquadFilterNode() 构造函数 | 551 | ≤79 | 53 | 不支持 | 422 | 未知 |
Q | 14 | 12 | 25 | 不支持 | 15 | 6 |
detune | 14 | 12 | 25 | 不支持 | 15 | 6 |
frequency | 14 | 12 | 25 | 不支持 | 15 | 6 |
gain | 14 | 12 | 25 | 不支持 | 15 | 6 |
getFrequencyResponse | 14 | 12 | 25 | 不支持 | 15 | 6 |
type | 14 | 12 | 25 | 不支持 | 15 | 6 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 18 | 未知 | 26 | 未知 | 14 | 支持 |
BiquadFilterNode() 构造函数 | 554 | 551 | 未知 | 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 之前,不支持默认值。