recursal/MDN huggingface dataset:
BaseAudioContext.createConvolver()
==================================

`createConvolver()` は `BaseAudioContext` インターフェイスのメソッドで、 `ConvolverNode` を生成します。これは一般に音声にリバーブ効果を適用するために使用されます。詳しくは畳み込み効果の仕様定義 を参照してください。

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

構文
--


```js
createConvolver();
```

### 引数

なし。

### 返値

`ConvolverNode` です。

例
-

次の例は、畳み込みノードを作成するための AudioContext の基本的な使用方法を示しています。大前提として、畳み込み効果を形成するアンビエンスとして使用するサウンドサンプル（*インパルスレスポンス*と呼ばれます）を含む AudioBuffer を作成し、それを畳み込みに適用します。下の例では、コンサートホールの観客の短いサンプルを使っているので、適用されるリバーブ効果はとても深く、エコーがかかっているようです。

応用例や情報については、 Voice-change-O-matic デモを参照してください（関連コードは app.js を参照してください）。


```js
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var convolver = audioCtx.createConvolver();

  ...

// XHR で畳み込みノードのための音声トラックを得る

var soundSource, concertHallBuffer;

ajaxRequest = new XMLHttpRequest();
ajaxRequest.open('GET', 'concert-crowd.ogg', true);
ajaxRequest.responseType = 'arraybuffer';

ajaxRequest.onload = function() {
  var audioData = ajaxRequest.response;
  audioCtx.decodeAudioData(audioData, function(buffer) {
      concertHallBuffer = buffer;
      soundSource = audioCtx.createBufferSource();
      soundSource.buffer = concertHallBuffer;
    }, function(e){"Error with decoding audio data" + e.err});
}

ajaxRequest.send();

  ...

convolver.buffer = concertHallBuffer;
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createconvolver |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.sampleRate
===========================

`sampleRate` は `BaseAudioContext` インターフェイスのプロパティで、この音声コンテキスト内のすべてのノードが使用するサンプリングレートを、1 秒あたりのサンプル数で表した浮動小数点数を返すものです。この制限は、サンプリングレートコンバーターに対応していないことを意味します。

値
-

音声コンテキストのサンプリングレートを、 1 秒当たりのサンプル数で示す浮動小数点数です。

例
-

**メモ:** 完全なウェブオーディオの実装の例は、GitHub の MDN リポジトリー にあるいずれかのウェブオーディオのデモを参照してください。
 ブラウザーのコンソールで `audioCtx.sampleRate` と入力してみてください。



```js
const audioCtx = new AudioContext();
// 古い webkit/blink のブラウザーでは接頭辞が必要です

// …

console.log(audioCtx.sampleRate);
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-samplerate |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.decodeAudioData()
==================================

`decodeAudioData()` は `BaseAudioContext` のメソッドで、 `ArrayBuffer` に書き込まれた音声ファイルデータを非同期にデコードするために使用されます。この場合、 `ArrayBuffer` は `XMLHttpRequest` と `FileReader` から読み込まれます。デコードされた `AudioBuffer` は `AudioContext` のサンプリングレートにリサンプリングされ、コールバックやプロミスに渡されます。

この方法は、オーディオトラックからウェブオーディオ API 用のオーディオソースを作成する際に推奨される方法です。この方法は、音声ファイルの断片的なデータではなく、完全なファイルデータに対してのみ動作します。

構文
--


```js
// 古いコールバックの構文:
decodeAudioData(arrayBuffer, successCallback);
decodeAudioData(arrayBuffer, successCallback, errorCallback);

// 新しいプロミスベースの構文:
decodeAudioData(arrayBuffer);
```

### 引数

*arrayBuffer*

デコードする音声データが入った ArrayBuffer です。通常は`XMLHttpRequest`, `fetch()`, `FileReader` から取得します。

*successCallback*

デコードが完了すると呼び出されるコールバック関数です。このコールバックの引数は 1 つで、 `AudioBuffer` であり *decodedData* （デコードされた PCM 音声データ）を表します。通常は、デコードされたデータを `AudioBufferSourceNode` に入れて、そこから再生したり、好きなように操作したりすることができます。

*errorCallback* 省略可

任意のエラーコールバックで、音声データのデコードでエラーが発生すると呼び出されます。

### 返値

なし、または *decodedData* で履行される `Promise` オブジェクトです。

例
-

ここでは最初に古いコールバックベースのシステムを、次に新しいプロミスベースの構文を取り上げます。

### 古いコールバックベースの構文

この例では、 `getData()` 関数は XHR を使用して音声トラックを読み込み、リクエストの `responseType` を `arraybuffer` に設定して、レスポンスとして配列バッファーを返すようにして、それを `audioData` 変数に格納しています。それからこのバッファーを `decodeAudioData()` 関数に渡します。成功したコールバックは、デコードに成功した PCM データを受け取り、 `AudioContext.createBufferSource()` で作成した `AudioBufferSourceNode` に入れ、ソースを `AudioContext.destination` に接続してループするように設定します。

ボタンは単に `getData()` を実行して、それぞれトラックの読み込みと再生、停止を行うだけです。ソースの `stop()` メソッドが呼ばれると、ソースは消滅します。

**メモ:** 例をライブで実行 （またはソースを閲覧することができます。）


```js
// 変数の定義

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var source;

var pre = document.querySelector("pre");
var myScript = document.querySelector("script");
var play = document.querySelector(".play");
var stop = document.querySelector(".stop");

// 音声トラックの読み込みには XHR を使い、
// decodeAudioData でデコードし、バッファーに格納する
// そして、そのバッファーを source に設定する

function getData() {
  source = audioCtx.createBufferSource();
  var request = new XMLHttpRequest();

  request.open("GET", "viper.ogg", true);

  request.responseType = "arraybuffer";

  request.onload = function () {
    var audioData = request.response;

    audioCtx.decodeAudioData(
      audioData,
      function (buffer) {
        source.buffer = buffer;

        source.connect(audioCtx.destination);
        source.loop = true;
      },

      function (e) {
        console.log("Error with decoding audio data" + e.err);
      },
    );
  };

  request.send();
}

// 音声の停止と再生を行うボタン

play.onclick = function () {
  getData();
  source.start(0);
  play.setAttribute("disabled", "disabled");
};

stop.onclick = function () {
  source.stop(0);
  play.removeAttribute("disabled");
};

// pre要素にスクリプトを設定する

pre.innerHTML = myScript.innerHTML;
```

### 新しいプロミスベースの構文


```js
ctx.decodeAudioData(audioData).then(function (decodedData) {
  // デコードしたデータをここで使う
});
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-decodeaudiodata |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.state
======================

`state` は `BaseAudioContext` インターフェイスの読み取り専用プロパティで、現在の `AudioContext` の状態を返します。

値
-

文字列です。取りうる値は以下の通りです。

* `suspended`: 音声コンテキストは（`AudioContext.suspend()` によって）一時停止中
* `running`: 音声コンテキストは通常動作中
* `closed`: 音声コンテキストは（`AudioContext.close()` によって）閉じられた
例
-

### 状態の変化の扱い

次のスニペットは AudioContext states のデモ（ライブ実行で確認）の一部です。 `onstatechange` ハンドラーは、状態が変わるたびにコンソールにログを出力するために使われています。


```js
audioCtx.onstatechange = function () {
  console.log(audioCtx.state);
};
```

### iOS Safari における一時停止した再生の再開の状態

iOS の Safari では、ユーザーが（タブの切り替え、ブラウザの最小化、画面のオフなどで）ページを離れると、音声コンテキストの状態が "interrupted" に変わり、再開させる必要があります。例えば次のようにします。


```js
function play() {
  if (audioCtx.state === "interrupted") {
    audioCtx.resume().then(() => play());
    return;
  }
  // ... rest of the play() function
}
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-state |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createStereoPanner()
=====================================

`createStereoPanner()` は `BaseAudioContext` インターフェイスのメソッドで、音源にステレオパンニングを適用する`StereoPannerNode`を生成します。
 入力された音声ストリームは、低コストのパンニングアルゴリズムで位置が決められます。

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

構文
--


```js
createStereoPanner();
```

### 引数

なし。

### 返値

`StereoPannerNode` を返します。

例
-

StereoPannerNode の例（ソースコードを参照）の HTML では、単純な `<audio>` 要素と、パン値を増減するスライダー `<input>` を用意しています。 JavaScript では、`MediaElementAudioSourceNode` と `StereoPannerNode` を作成し、`connect()` メソッドを用いて両者をつなげます。そして、`oninput` イベントハンドラーを使って `StereoPannerNode.pan` (en-US) パラメータの値を変更し、スライダーが動いたときにパン値の表示を更新しています。

音楽再生中にスライダーを左右に動かすと、出力の左右のスピーカーにそれぞれ音楽がパンされます。


```js
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var myAudio = document.querySelector("audio");

var panControl = document.querySelector(".panning-control");
var panValue = document.querySelector(".panning-value");

pre.innerHTML = myScript.innerHTML;

// MediaElementAudioSourceNode を生成し、
// そこに HTMLMediaElementを 入れる
var source = audioCtx.createMediaElementSource(myAudio);

// ステレオパンナーを生成する
var panNode = audioCtx.createStereoPanner();

// イベントハンドラー関数で、スライダーが動いたとき
// 左右のパンの値を左右する

panControl.oninput = function () {
  panNode.pan.setValueAtTime(panControl.value, audioCtx.currentTime);
  panValue.innerHTML = panControl.value;
};

// MediaElementAudioSourceNode を panNode に、 panNode を
// 出力先に接続し、音楽を再生してコントロールでパンを調整
// できるようにします。
source.connect(panNode);
panNode.connect(audioCtx.destination);
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createstereopanner |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createDelay()
==============================

`createDelay()` は `BaseAudioContext` インターフェイスのメソッドで、 `DelayNode` を生成します。これは、入力される音声信号を一定時間遅らせるために使用します。

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

構文
--


```js
createDelay(maxDelayTime);
```

### 引数

`maxDelayTime` 省略可

音声信号を遅延させることができる最大時間（秒）を指定します。 180 秒未満である必要があり、指定しない場合は 1 秒が既定値となります。

### 返値

`DelayNode` です。既定の `DelayNode.delayTime` は 0 秒です。

例
-

3 つの異なるサンプルを一定のループで再生する簡単な例を作成しました。 create-delay をご覧ください（ソースコードを閲覧することもできます）。再生ボタンを押しただけでは、ループはすぐに始まります。スライダーを右にスライドさせてから再生ボタンを押すと、遅延が導入され、ループする音は短い時間だけ再生を開始しません。


```js
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

var synthDelay = audioCtx.createDelay(5.0);

  ...

var synthSource;

playSynth.onclick = function() {
  synthSource = audioCtx.createBufferSource();
  synthSource.buffer = buffers[2];
  synthSource.loop = true;
  synthSource.start();
  synthSource.connect(synthDelay);
  synthDelay.connect(destination);
  this.setAttribute('disabled', 'disabled');
}

stopSynth.onclick = function() {
  synthSource.disconnect(synthDelay);
  synthDelay.disconnect(destination);
  synthSource.stop();
  playSynth.removeAttribute('disabled');
}

...

var delay1;
rangeSynth.oninput = function() {
  delay1 = rangeSynth.value;
  synthDelay.delayTime.setValueAtTime(delay1, audioCtx.currentTime);
}
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createdelay |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.listener
=========================

`listener` は `BaseAudioContext` インターフェイスのプロパティで、三次元音声空間処理を実装するために使う `AudioListener` オブジェクトを返します。

値
-

`AudioListener` オブジェクトです。

例
-

**メモ:** 完全な三次元音声空間処理の例は、 panner-node のデモを参照してください。


```js
const audioCtx = new AudioContext();
// 古い webkit/blink のブラウザーでは接頭辞が必要です

// …

const myListener = audioCtx.listener;
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-listener |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createGain()
=============================

`createGain()` は `BaseAudioContext` インターフェイスのメソッドで、 `GainNode` を生成します。これは、音声グラフの全体的なゲイン（音量）を調整するのに使用します。

**メモ:** `GainNode()` コンストラクターは `GainNode` を作成するための推奨される方法です。 AudioNode の作成を参照してください。

構文
--


```js
createGain();
```

### 引数

なし。

### 返値

1 つ以上の音声ソースを入力とし、ノードの `GainNode` で指定されたレベルにゲイン（音量）が調整された音声を出力する `GainNode.gain` です。 a-rate 引数で指定された音量にゲイン調整された音声を出力します。

例
-

次の例は `AudioContext` を使って `GainNode` を作成し、Mute ボタンをクリックしたときに `gain` プロパティの値を変更して音声をミュートしたりミュート解除したりする基本的な使用方法を示しています。

以下のスニペットはそのままでは動作しません。完全な動作例については、 Voice-change-O-matic（ソースを閲覧）デモをご覧ください。


```html
<div>
  <button class="mute">Mute button</button>
</div>
```



```js
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var gainNode = audioCtx.createGain();
var mute = document.querySelector('.mute');
var source;

if (navigator.mediaDevices.getUserMedia) {
 navigator.mediaDevices.getUserMedia (
   // constraints - only audio needed for this app
   {
     audio: true
   },

   // Success callback
   function(stream) {
     source = audioCtx.createMediaStreamSource(stream);

   },

   // Error callback
   function(err) {
     console.log('The following gUM error occurred: ' + err);
   }
  );
} else {
   console.log('getUserMedia not supported on your browser!');
}

source.connect(gainNode);
gainNode.connect(audioCtx.destination);

  ...

mute.onclick = voiceMute;

function voiceMute() {
  if(mute.id == "") {
    // 0 means mute. If you still hear something, make sure you haven't
    // connected your source into the output in addition to using the GainNode.
    gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
    mute.id = "activated";
    mute.textContent = "Unmute";
  } else {
    gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
    mute.id = "";
    mute.textContent = "Mute";
  }
}
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-creategain |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createWaveShaper()
===================================

`createWaveShaper()` は `BaseAudioContext` インターフェイスのメソッドで、 `WaveShaperNode` (en-US) を生成します。これは非線形な歪みを表現します。オーディオに歪み効果を適用するために使用されます。

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

構文
--


```js
createWaveShaper();
```

### 引数

なし。

### 返値

`WaveShaperNode` (en-US) です。

例
-

以下の例では、 AudioContext を使用して波形整形ノードを作成する基本的な使い方を示しています。応用例や情報については、 Voice-change-O-matic のデモを参照してください（関連コードは app.js を参照してください）。

**メモ:** シグモイド関数は、その自然な特性から、歪みカーブとしてよく使われます。例えば、その S 字形状は、より滑らかなサウンドを作り出すのに役立ちます。 Stack Overflow に、以下のような歪み曲線のコードが掲載されていました。


```js
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var distortion = audioCtx.createWaveShaper();

  ...

function makeDistortionCurve(amount) {
  var k = typeof amount === 'number' ? amount : 50,
    n_samples = 44100,
    curve = new Float32Array(n_samples),
    deg = Math.PI / 180,
    i = 0,
    x;
  for ( ; i < n_samples; ++i ) {
    x = i \* 2 / n_samples - 1;
    curve[i] = ( 3 + k ) \* x \* 20 \* deg / ( Math.PI + k \* Math.abs(x) );
  }
  return curve;
};

  ...

distortion.curve = makeDistortionCurve(400);
distortion.oversample = '4x';
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createwaveshaper |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createPeriodicWave()
=====================================

`createPeriodicWave()` は `AudioContext` インターフェイスのメソッドで、周期的な波形を定義するために使われる `PeriodicWave` を生成します。これは `OscillatorNode` の出力を決めるために使われます。

構文
--


```js
createPeriodicWave(real, imag);
createPeriodicWave(real, imag, constraints);
```

### 引数

`real`

余弦項（従来は A 項）の配列。

`imag`

正弦項（従来は B 項）の配列。

配列 `real` と `imag` は同じ長さでなければならず、そうでない場合はエラーが発生します。

`constraints` 省略可

正規化を無効にするかどうか（指定しない場合、正規化は既定で有効）を指定する辞書オブジェクトです。 1 つのプロパティを持ちます。

* `disableNormalization`: `true` に設定すると、周期的な波の正規化を無効にします。既定値は `false` です。


**メモ:** 正規化した場合、結果の波は最大絶対ピーク値が 1 になります。

### 返値

`PeriodicWave` です。

例
-

次の例は、 `createPeriodicWave()` を使用して単純な正弦波を含む `PeriodicWave` オブジェクトを作成する方法を示しています。


```js
var real = new Float32Array(2);
var imag = new Float32Array(2);
var ac = new AudioContext();
var osc = ac.createOscillator();

real[0] = 0;
imag[0] = 0;
real[1] = 1;
imag[1] = 0;

var wave = ac.createPeriodicWave(real, imag, { disableNormalization: true });

osc.setPeriodicWave(wave);

osc.connect(ac.destination);

osc.start();
osc.stop(2);
```


これは、基本音だけを含む音は、定義上、正弦波であるため、うまくいきます。

ここでは、 2 つの値を持つ `PeriodicWave` を作成します。最初の値は DC オフセットで、これはオシレーターを開始する値です。ここでは、曲線を [-1.0; 1.0] 範囲の中央で開始したいので、 0 が適しています。

2 つ目以降の値は正弦波と余弦波成分です。時間領域の値から周波数領域の値を得る、フーリエ変換の結果と考えることができます。ここでは、`createPeriodicWave()`で、周波数を指定すると、ブラウザーは逆フーリエ変換を行い、発振器の周波数の時間領域のバッファーを取得します。ここでは、基本音にフルボリューム（1.0）の 1 成分のみを設定しているので、正弦波が得られます。

フーリエ変換の係数は昇順で与えなければならず（すなわち、


(

a
+
b
i

)

e
i

,

(

c
+
d
i

)

e

2
i

,

(

f
+
g
i

)

e

3
i

 \left(a+bi\right)e^{i} , \left(c+di\right)e^{2i} ,
 \left(f+gi\right)e^{3i} 


など）、正でも負でも構いません。このような係数を手動で得る簡単な方法は（ベストではありませんが）、グラフ計算機を使うことです。

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createperiodicwave |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createChannelSplitter()
========================================

`createChannelSplitter()` は `BaseAudioContext` インターフェイスのメソッドで、 `ChannelSplitterNode` を作成します。これは音声ストリームの個々のチャンネルにアクセスし、それらを個別に処理するために使用されます。

**メモ:** `ChannelSplitterNode()` コンストラクターは `ChannelSplitterNode` を作成するための推奨される方法です。 AudioNode の作成を参照してください。

構文
--


```js
createChannelSplitter(numberOfOutputs);
```

### 引数

numberOfOutputs

入力オーディオストリームのうち、個別に出力したいチャンネル数です。この引数が指定されていない場合の既定値は 6 です。

### 返値

`ChannelSplitterNode` です。

例
-

次の単純な例では、ステレオトラック（例えば音楽）を分離し、左チャンネルと右チャンネルを別々に処理する方法を示しています。これを使うには、 `AudioNode.connect(AudioNode)` メソッドの第 2、第 3 引数を使って、接続元のチャンネルのインデックスと接続先のチャンネルのインデックスを指定することが必要です。


```js
var ac = new AudioContext();
ac.decodeAudioData(someStereoBuffer, function (data) {
  var source = ac.createBufferSource();
  source.buffer = data;
  var splitter = ac.createChannelSplitter(2);
  source.connect(splitter);
  var merger = ac.createChannelMerger(2);

  // 左チャンネルのボリュームのみ小さくする
  var gainNode = ac.createGain();
  gainNode.gain.setValueAtTime(0.5, ac.currentTime);
  splitter.connect(gainNode, 0);

  // スプリッターをマージャーの 2 番目の入力に接続すると、チャンネルが効果的に交換され、
  // ステレオイメージが反転します。
  gainNode.connect(merger, 0, 1);
  splitter.connect(merger, 1, 0);

  var dest = ac.createMediaStreamDestination();

  // ChannelMergerNode を使っているので、ステレオの MediaStream が
  // できました。これでウェブオーディオグラフを WebRTC や MediaRecorder などに
  // パイプするのに使えます。
  merger.connect(dest);
});
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createchannelsplitter |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createConstantSource()
=======================================

**`createConstantSource()`** は `BaseAudioContext` インターフェイスのプロパティで、 `ConstantSourceNode` オブジェクトを作成します。これはサンプル数がすべて同じ値のモノラル（1 チャンネル）音声信号を連続的に出力する音声ソースです。

**メモ:** `ConstantSourceNode()` コンストラクターは `ConstantSourceNode` を作成するための推奨される方法です。 AudioNode の作成を参照してください。

構文
--


```js
createConstantSource();
```

### 引数

なし。

### 返値

`ConstantSourceNode` のインスタンスです。

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createconstantsource |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
BaseAudioContext: statechange イベント
==================================

`statechange` イベントは、 `BaseAudioContext` オブジェクトに対して `state` メンバーが変化したときに発生します。

構文
--

このイベント名を `addEventListener()` のようなメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。


```js
addEventListener("statechange", (event) => {});

onstatechange = (event) => {};
```

イベント型
-----

一般的な `Event` です。

例
-

次のスニペットは AudioContext states のデモ（ライブ実行を確認）の一部です。 `onstatechange` ハンドラーは現在の `state` を、変化するたびにコンソールへログ出力します。


```js
audioCtx.onstatechange = function () {
  console.log(audioCtx.state);
};
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-onstatechange |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createDynamicsCompressor()
===========================================

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

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

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

構文
--


```js
createDynamicsCompressor();
```

### 引数

なし。

### 返値

`DynamicsCompressorNode` (en-US) です。

例
-

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


```js
// 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 with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
BaseAudioContext.createIIRFilter()
==================================

**`createIIRFilter()`** は `BaseAudioContext` インターフェイスのメソッドで、 `IIRFilterNode` を生成します。
 これは一般的な\*\*無限インパルス応答\*\* (IIR) フィルターを生成し、これはよって様々な種類のフィルターとして提供できるように構成することができます。
 of filter.

**メモ:** `IIRFilterNode()` コンストラクターは `IIRFilterNode` を作成するための推奨される方法です。 AudioNode の作成を参照してください。

構文
--


```js
createIIRFilter(feedforward, feedback);
```

### 引数

`feedforward`

浮動小数点値の配列で、 IIR フィルターの伝達関数のフィードフォワード（分子）係数を指定します。この配列の最大長は 20 で、少なくとも 1 つの値はゼロ以外でなければなりません。

`feedback`

浮動小数点値の配列で、 IIR フィルターの伝達関数のフィードバック（分母）係数を指定します。この配列は最大 20 個のメンバーを持つことができ、そのうちの最初のメンバーは 0 以外でなければなりません。

### 返値

指定されたフィードバックとフィードフォワードの係数配列を持つフィルターを実装した `IIRFilterNode` です。

### 例外

`InvalidStateError` `DOMException`

すべての `feedforward` 係数が 0 の場合、あるいは最初の `feedback` 係数が 0 の場合に発生します。

`NotSupportedError` `DOMException`

入力配列の一方または両方が20個を超えた場合に発生します。

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createiirfilter |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用
* `IIRFilterNode`
* `AudioNode`
BaseAudioContext.createOscillator()
===================================

`createOscillator()` は `BaseAudioContext` インターフェイスのメソッドで、周期的な波形を表現するソースである `OscillatorNode` を生成します。基本的には一定の音程を発生させます。

**メモ:** `OscillatorNode()` コンストラクターは `OscillatorNode` を作成するための推奨される方法です。 AudioNode の作成を参照してください。

構文
--


```js
createOscillator();
```

### 引数

なし。

### 返値

`OscillatorNode` です。

例
-

次の例は、 AudioContext を使用してオシレーターノードを作成する基本的な使用方法です。応用例や情報については、 Violent Theremin のデモを（関連するコードの app.jsも）参照してください。また、より詳しい情報は `OscillatorNode` ページをご覧ください。


```js
// ウェブオーディオ API コンテキストを生成する
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();

// オシレーターノードを生成する
var oscillator = audioCtx.createOscillator();

oscillator.type = "square";
oscillator.frequency.setValueAtTime(3000, audioCtx.currentTime); // 値をヘルツで指定
oscillator.connect(audioCtx.destination);
oscillator.start();
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-baseaudiocontext-createoscillator |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用