DynamicsCompressorNode - 提供音频压缩效果,可降低信号最响亮部分的音量
DynamicsCompressorNode
接口提供音频压缩效果,可降低信号最响亮部分的音量,以帮助防止在多个声音一次播放和多路复用时发生的削波和失真。这通常用于音乐制作和游戏音频。DynamicsCompressorNode
是一个 AudioNode
,它只有一个输入和一个输出; 它是使用 AudioContext.createDynamicsCompressor()
方法创建的。
输入数量 | 1 |
---|---|
输出数量 | 1 |
通道计数模式 | "explicit" |
通道数 | 2 |
通道解释 | "speakers" |
构造函数
DynamicsCompressorNode()
创建 DynamicsCompressorNode
对象的新实例。
属性
从其父类 AudioNode
继承属性。
DynamicsCompressorNode.threshold
只读
一个 k-rate AudioParam
,表示压缩将开始生效的分贝值。
DynamicsCompressorNode.knee
只读
一个 k-rate AudioParam
,包含表示高于阈值的范围的分贝值,其中曲线平滑地过渡到压缩部分。
DynamicsCompressorNode.ratio
只读
一个 k-rate AudioParam
,表示输出中 1dB 变化的输入所需的变化量(dB)。
DynamicsCompressorNode.reduction
只读
一个 float
,表示当前压缩器对信号应用的增益减少量。
DynamicsCompressorNode.attack
只读
一个 k-rate AudioParam
,表示将增益降低 10dB 所需的时间量(以秒为单位)。
DynamicsCompressorNode.release
只读
一个 k-rate AudioParam
表示将增益增加 10dB 所需的时间量(以秒为单位)。
方法
*没有自有的方法; 只从其父类 AudioNode
继承了方法。
实例
下面的代码演示了 createDynamicsCompressor()
的简单用法,用于向音轨添加压缩。有关更完整的示例,请查看我们的基本 Compressor 示例(查看源代码)。
// 创建 MediaElementAudioSourceNode
// 将 HTMLMediaElement 输入其中
var source = audioCtx.createMediaElementSource(myAudio);
// 创建压缩器节点
var compressor = audioCtx.createDynamicsCompressor();
compressor.threshold.setValueAtTime(-50, audioCtx.currentTime);
compressor.knee.setValueAtTime(40, audioCtx.currentTime);
compressor.ratio.setValueAtTime(12, audioCtx.currentTime);
compressor.attack.setValueAtTime(0, audioCtx.currentTime);
compressor.release.setValueAtTime(0.25, audioCtx.currentTime);
// 将 AudioBufferSourceNode 连接到目标
source.connect(audioCtx.destination);
button.onclick = function() {
var active = button.getAttribute('data-active');
if(active == 'false') {
button.setAttribute('data-active', 'true');
button.innerHTML = 'Remove compression';
source.disconnect(audioCtx.destination);
source.connect(compressor);
compressor.connect(audioCtx.destination);
} else if(active == 'true') {
button.setAttribute('data-active', 'false');
button.innerHTML = 'Add compression';
source.disconnect(compressor);
compressor.disconnect(audioCtx.destination);
source.connect(audioCtx.destination);
}
}
规范
规范 | 状态 | 备注 |
---|---|---|
Web Audio API DynamicsCompressorNode 的定义 |
工作草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 14 | 支持 | 25 | 不支持 | 15 | 6 |
DynamicsCompressorNode() constructor |
551 | 未知 | 53 | 不支持 | 42 | 未知 |
attack |
14 | 12 | 25 | 不支持 | 15 | 6 |
knee |
14 | 12 | 25 | 不支持 | 15 | 6 |
ratio |
14 | 12 | 25 | 不支持 | 15 | 6 |
reduction |
142 | 12 | 25 | 不支持 | 15 | 6 |
release |
14 | 12 | 25 | 不支持 | 15 | 6 |
threshold |
14 | 12 | 25 | 不支持 | 15 | 6 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 14 | 14 | 支持 | 26 | 未知 | 15 | 未知 |
DynamicsCompressorNode() constructor |
551 | 551 | 未知 | 53 | 未知 | 42 | 未知 |
attack |
支持 | 14 | 支持 | 26 | 未知 | 15 | 未知 |
knee |
支持 | 14 | 支持 | 26 | 未知 | 15 | 未知 |
ratio |
支持 | 14 | 支持 | 26 | 未知 | 15 | 未知 |
reduction |
支持2 | 142 | 支持 | 26 | 未知 | 15 | 未知 |
release |
支持 | 14 | 支持 | 26 | 未知 | 15 | 未知 |
threshold |
支持 | 14 | 支持 | 26 | 未知 | 15 | 未知 |
1. 在 Chrome 59 之前,不支持默认值。
2. 在版本 52 之前,它是一个 AudioParam
。