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 |
瀏覽器相容性
載入中…