--- title: AudioContext.createDynamicsCompressor() slug: Web/API/BaseAudioContext/createDynamicsCompressor translation_of: Web/API/BaseAudioContext/createDynamicsCompressor original_slug: Web/API/AudioContext/createDynamicsCompressor ---
{{ APIRef("Web Audio API") }}
{{ domxref("AudioContext") }}インターフェースのcreateDynamicsCompressor()メソッドは、音声信号にコンプレッサーを適用する{{domxref("DynamicsCompressorNode")}}を生成します。
コンプレッサーは、音声信号の最大部分の音量を小さくし、最小部分の音量を大きくします。一般的に、より大きく、豊かで、高密度な音になります。これはゲームや音楽アプリケーションでたくさんの別々の音を同時に再生する場合に特に重要です。このような場合、全体の音量の操作したり、出力音声のクリッピング(ひずみ)を避けたいはずです。
var audioCtx = new AudioContext(); var compressor = audioCtx.createDynamicsCompressor();
{{domxref("DynamicsCompressorNode")}}
音声トラックにコンプレッサーを追加するためにcreateDynamicsCompressor()を使う簡単なデモコードです。より完全なサンプルは、basic Compressor example (ソースコードの閲覧)を参照してください。
// MediaElementAudioSourceNodeを生成する
// そこにHTMLMediaElementを入れる
var source = audioCtx.createMediaElementSource(myAudio);
// コンプレッサーノードを生成する
var compressor = audioCtx.createDynamicsCompressor();
compressor.threshold.value = -50;
compressor.knee.value = 40;
compressor.ratio.value = 12;
compressor.reduction.value = -20;
compressor.attack.value = 0;
compressor.release.value = 0.25;
// AudioBufferSourceNodeを行き先(destination)につなげる
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);
}
}
| Specification | Status | Comment |
|---|---|---|
| {{SpecName('Web Audio API', '#widl-AudioContext-createDynamicsCompressor-DynamicsCompressorNode', 'createDynamicsCompressor()')}} | {{Spec2('Web Audio API')}} |
{{Compat("api.BaseAudioContext.createDynamicsCompressor")}}