BaseAudioContext:createDynamicsCompressor() 方法
BaseAudioContext
接口的 createDynamicsCompressor()
方法用于创建一个 DynamicsCompressorNode
,该节点可用于对音频信号应用压缩。
压缩降低信号最强部分的音量,并提高最弱部分的音量。总的来说,可以获得更响亮、更丰富、更饱满的声音。这在游戏和音乐应用中尤其重要,在这些应用中,会同时播放大量单独的声音,并且需要控制整体信号电平,并避免音频输出削波(失真)。
注意: DynamicsCompressorNode()
构造函数是创建 DynamicsCompressorNode
的推荐方法;请参阅 创建 AudioNode。
语法
js
createDynamicsCompressor()
参数
无。
返回值
一个 DynamicsCompressorNode
。
示例
以下代码演示了 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 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。