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

相关链接