BaseAudioContext: createDynamicsCompressor() 方法
BaseAudioContext 接口的 createDynamicsCompressor() 方法用于创建一个 DynamicsCompressorNode,该节点可以用来对音频信号应用压缩。
压缩会降低信号最响亮部分(响度)的音量,并提高最安静部分(响度)的音量。总体而言,可以获得更响亮、更丰富、更饱满的声音。这在同时播放大量独立声音的游戏和音乐应用中尤其重要,因为您希望控制整体信号电平,并帮助避免音频输出的削波(失真)。
注意: DynamicsCompressorNode() 构造函数是创建 DynamicsCompressorNode 的推荐方式;请参阅 创建 AudioNode。
语法
js
createDynamicsCompressor()
参数
无。
返回值
示例
下面的代码展示了如何使用 createDynamicsCompressor() 为音频轨道添加压缩。有关更完整的示例,请查看我们的 基础压缩器示例(查看源代码)。
js
// Create a MediaElementAudioSourceNode
// Feed the HTMLMediaElement into it
const source = audioCtx.createMediaElementSource(myAudio);
// Create a compressor node
const 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);
// connect the AudioBufferSourceNode to the destination
source.connect(audioCtx.destination);
button.onclick = () => {
const active = button.getAttribute("data-active");
if (active === "false") {
button.setAttribute("data-active", "true");
button.textContent = "Remove compression";
source.disconnect(audioCtx.destination);
source.connect(compressor);
compressor.connect(audioCtx.destination);
} else if (active === "true") {
button.setAttribute("data-active", "false");
button.textContent = "Add compression";
source.disconnect(compressor);
compressor.disconnect(audioCtx.destination);
source.connect(audioCtx.destination);
}
};
规范
| 规范 |
|---|
| Web Audio API # dom-baseaudiocontext-createdynamicscompressor |
浏览器兼容性
加载中…