BaseAudioContext.createDynamicsCompressor()

createDynamicsCompressor()BaseAudioContext インターフェイスのメソッドで、 DynamicsCompressorNode (en-US) を生成します。これで、音声信号に圧縮をかけることができます。

圧縮は、信号の最も大きな部分の音量を下げ、最も小さな部分の音量を上げます。全体として、より大きく、より豊かで、充実したサウンドを実現することができます。特に、ゲームや音楽など、多数の音を同時に再生するアプリケーションでは、全体の信号レベルを制御し、音声出力のクリッピング(歪み)を回避するのに役立つので、重要です。

Note: DynamicsCompressorNode() (en-US) コンストラクターは DynamicsCompressorNode (en-US) を作成するための推奨される方法です。 AudioNode の作成を参照してください。

構文

createDynamicsCompressor()

引数

なし。

返値

以下のコードは、音声トラックに圧縮を加えるための createDynamicsCompressor() の簡単な使用法を示しています。より完全な例としては、基本的なコンプレッサーの例ソースコードを閲覧)をご覧ください。

// 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.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);
  }
}

仕様書

Specification
Web Audio API
# dom-baseaudiocontext-createdynamicscompressor

ブラウザーの互換性

BCD tables only load in the browser

関連情報