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。