recursal/MDN huggingface dataset:
MediaRecorder: pause イベント
=========================

`pause` イベントは、`MediaRecorder.pause()` メソッドを呼び出した結果として発生します。

構文
--

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


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

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

イベント型
-----

一般的な `Event` です。

例
-


```js
pause.onclick = () => {
  if (mediaRecorder.state === "recording") {
    mediaRecorder.pause();
    // 記録を一時停止
  } else if (mediaRecorder.state === "paused") {
    mediaRecorder.resume();
    // 記録を再開
  }
};

mediaRecorder.onpause = () => {
  // 記録の一時停止に
  // 応答して何かをする
};

mediaRecorder.onresume = () => {
  // 記録の再開に
  // 応答して何かをする
};
```

インスタンスプロパティ
-----------

なし。

仕様書
---

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-onpause |

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

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

関連情報
----

* MediaStream 収録 API の使用
* ウェブディクタフォン: MediaRecorder + getUserMedia + Web Audio API 可視化デモ、Chris Mills 著（GitHub のソース）。（英語）
* simpl.info の MediaStream 収録のデモ、Sam Dutton 著。（英語）
* `Navigator.getUserMedia`
MediaRecorder.videoBitsPerSecond
================================

**videoBitsPerSecond`** は `MediaRecorder` インターフェイスの読み取り専用プロパティは、使用されている動画エンコーディングのビットレートを返します。

これは、コンストラクタで指定されたビットレートが提供された場合、そのビットレートとは異なる形になる可能性があります。

値
-

数値 (unsigned long) です。

例
-


```js
// TBD
```

仕様書
---

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-videobitspersecond |

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

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

`stop` イベントは、`MediaRecorder.stop()` メソッドを呼び出した結果として、またはキャプチャしているメディアストリームが終了したときに発生します。 いずれの場合も、`stop` イベントの前に `dataavailable` イベントがあり、それまでにキャプチャされた `Blob` をアプリで使用できるようにします。

構文
--

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


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

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

イベント型
-----

一般的な `Event` です。

例
-


```js
mediaRecorder.onstop = (e) => {
  console.log("MediaRecorder.stop() 呼び出し後に利用可能なデータ。");

  const audio = document.createElement("audio");
  audio.controls = true;
  const blob = new Blob(chunks, { type: "audio/ogg; codecs=opus" });
  const audioURL = window.URL.createObjectURL(blob);
  audio.src = audioURL;
  console.log("レコーダー停止");
};

mediaRecorder.ondataavailable = (e) => {
  chunks.push(e.data);
};
```

仕様書
---

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-onstop |

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

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

関連情報
----

* MediaStream 収録 API の使用
* ウェブディクタフォン: MediaRecorder + getUserMedia + Web Audio API 可視化デモ、Chris Mills 著（GitHub のソース）。（英語）
* simpl.info の MediaStream 収録のデモ、Sam Dutton 著。（英語）
* `Navigator.getUserMedia`
MediaRecorder.resume()
======================

**`MediaRecorder.resume()`** メソッド（MediaStream 収録 API の一部）は、以前に一時停止していたメディアの記録を再開するために使用します。

`resume()` メソッドを呼び出すと、ブラウザーは次の手順を実行するタスクをキューに入れます。

1. `MediaRecorder.state` が "inactive" の場合は、DOM の `InvalidState` エラーを発生させてこれらの手順を終了します。 `MediaRecorder.state` が "inactive" でない場合は、次の手順に進みます。
2. `MediaRecorder.state` を "recording" に設定します。
3. 現在の `Blob` へのデータ収集を続けます。
4. `resume` イベントを発生させます。
構文
--


```js
resume()
```

### 引数

なし。

### 返値

なし (`undefined`)。

### エラー

`MediaRecorder` オブジェクトの `MediaRecorder.state` が "inactive" のときに `resume()` メソッドが呼び出されると、`InvalidState` エラーが発生します — まだ一時停止していない場合、記録を再開できませんし、`MediaRecorder.state` がすでに `"recording"` の場合、`resume()` は効果がありません。

例
-


```js
pause.onclick = () => {
  if (MediaRecorder.state === "recording") {
    mediaRecorder.pause();
    // 記録を一時停止
  } else if (MediaRecorder.state === "paused") {
    mediaRecorder.resume();
    // 記録を再開
  }
};
```

仕様書
---

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-resume |

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

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

関連情報
----

* MediaStream 収録 API の使用
* ウェブディクタフォン: MediaRecorder + getUserMedia + Web Audio API 可視化デモ、Chris Mills 著（Github のソース）。（英語）
* simpl.info の MediaStream 収録のデモ、Sam Dutton 著。（英語）
* `Navigator.getUserMedia`
MediaRecorder: start イベント
=========================

`start` イベントは、`MediaRecorder.start()` メソッドを呼び出した結果として発生します。 この時点で、データは `Blob` に集められ始めます。

構文
--

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


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

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

イベント型
-----

一般的な `Event` です。

例
-


```js
record.onclick = () => {
  mediaRecorder.start();
  console.log("レコーダーが起動しました");
};

mediaRecorder.onstart = () => {
  // 記録の開始に
  // 応答して何かをする
};
```

インスタンスプロパティ
-----------

なし。

仕様書
---

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-onstart |

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

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

関連情報
----

* MediaStream 収録 API の使用
* ウェブディクタフォン: MediaRecorder + getUserMedia + Web Audio API 可視化デモ、Chris Mills 著（GitHub のソース）。（英語）
* simpl.info の MediaStream 収録のデモ、Sam Dutton 著。（英語）
* `Navigator.getUserMedia`
MediaRecorder.state
===================

**`MediaRecorder.state`** は読み取り専用プロパティで、現在の `MediaRecorder` オブジェクトの現在の状態を返します。

値
-

以下のいずれかの値を含む文字列です。

`inactive`

収録は行われていません — まだ開始されていないか、開始されてから停止されました。

`recording`

収録が開始され、UA がデータをキャプチャしています。

`paused`

収録は開始され、その後一時停止されましたが、まだ停止または再開されていません。

例
-


```js
record.onclick = () => {
  mediaRecorder.start();
  console.log(mediaRecorder.state);
  // Will return "recording"
  console.log("recorder started");
};
```

使用書
---

| Specification |
| --- |
| MediaStream Recording # dom-mediarecorder-state |

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

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

関連情報
----

* MediaStream 収録 API の使用
* ウェブディクタフォン: MediaRecorder + getUserMedia + Web Audio API 可視化デモ、Chris Mills 著（GitHub のソース）。（英語）
* simpl.info の MediaStream Recording のデモ、Sam Dutton 著。（英語）
* `MediaDevices.getUserMedia`
FormData: FormData() コンストラクター
=============================

**`FormData()`** コンストラクターは、新しい `FormData` オブジェクトを生成します。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
new FormData()
new FormData(form)
new FormData(form, submitter)
```

### 引数

`form` 省略可

HTML の `<form>` 要素です。指定された場合、`FormData` オブジェクトは、その各要素の name プロパティをキーに、それらの送信される値を値として使い、フォームの現在のキーと値が設定されます。ファイルからの入力内容は、エンコードもされます。

`submitter` 省略可

`form` のメンバーである送信ボタンです。もし `submitter` に `name` 属性があるか、`<input type="image">` であった場合、このデータは `FormData` オブジェクトに含まれます（例えば `btnName=btnValue`）。

### 例外

`TypeError`

指定した `submitter` が送信ボタンでない場合に発生します。

`NotFoundError` `DOMException`

指定した `submitter` が `form` のメンバーでない場合に発生します。`submitter` はフォーム要素の子孫であるか、フォームを参照する `form` 属性がなければなりません。

例
-

### 空の FormData の作成

次の行は、空の `FormData` オブジェクトを生成します。


```js
const formData = new FormData();
```


`append()` を使って、これにキーと値のペアを追加することができます。


```js
formData.append("username", "Chris");
```

### HTML フォーム要素からの事前入力

オプションで `form` と `submitter` を指定すると、`FormData` オブジェクトを作成する際に、指定したフォームの値を事前入力することができます。

**メモ:** FormData オブジェクトに含まれるのは、正常なフォームコントロールのみです。つまり、名前を持ち、無効状態でないものです。

#### HTML


```html
<form id="form">
  <input type="text" name="text1" value="foo" />
  <input type="text" name="text2" value="bar" />
  <input type="text" name="text2" value="baz" />
  <input type="checkbox" name="check" checked disabled />
  <button name="intent" value="save">Save</button>
  <button name="intent" value="saveAsCopy">Save As Copy</button>
</form>

<output id="output"></output>
```


```
form {
  display: none;
}

output {
  display: block;
  white-space: pre-wrap;
}
```


#### JavaScript


```js
const form = document.getElementById("form");
const submitter = document.querySelector("button[value=save]");
const formData = new FormData(form, submitter);

const output = document.getElementById("output");

for (const [key, value] of formData) {
  output.textContent += `${key}: ${value}\n`;
}
```


#### 結果

簡潔にするため、`<form>` 要素は非表示にしています。

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata |

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: delete() メソッド
=======================

**`delete()`** は `FormData` インターフェイスのメソッドで、`FormData` オブジェクトからキーとその値を削除します。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
delete(name)
```

### 引数

`name`

削除したいキーの名前です。

### 返値

なし (`undefined`)。

例
-

`delete()` を使用すると、キーとその値を削除することができます。


```js
formData.delete("username");
```

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata-delete |

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: keys() メソッド
=====================

**`FormData.keys()`** メソッドは、この `FormData` に含まれるすべてのキーを走査するイテレーターを返します。キーは文字列です。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
keys()
```

### 引数

なし。

### 返値

この `FormData` のキーのイテレーターです。

例
-


```js
const formData = new FormData();
formData.append("key1", "value1");
formData.append("key2", "value2");

// キーを表示
for (const key of formData.keys()) {
  console.log(key);
}
```


結果は次のとおりです。
```

key1
key2
```

仕様書
---

#### No specification found

No specification data found for `api.FormData.keys`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: set() メソッド
====================

**`set()`** は `FormData` インターフェイスのメソッドで、`FormData` オブジェクト内の既存のキーに値を追加したり、存在しないキーと値の組を追加したりします。

`set()` と `append()` の違いは、指定されたキーが既に存在した場合、`set()` は既存のすべての値を新しい値で上書きすることです。 一方、`append()` は、既存の値のセットの末尾に新しい値を追加します。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
set(name, value)
set(name, value, filename)
```

### 引数

`name`

`value` にあるデータのフィールド名です。

`value`

フィールドの値です。文字列または `Blob`（`File` などのサブクラスを含む）です。これらの何れでもないものが指定された場合、値は文字列に変換されます。

`filename` 省略可

第 2 引数に `Blob` または `File` を渡した場合に、サーバーに報告されるファイル名（文字列）です。`Blob` オブジェクトの既定のファイル名は "blob" です。`File` オブジェクトの既定値は、ファイルのファイル名です。


**メモ:** `FormData` オブジェクトに追加するデータとして `Blob` を指定した場合、"Content-Disposition" ヘッダーでサーバーに報告されるファイル名はブラウザーによって異なることがあります。

### 返値

なし (`undefined`)。

例
-


```js
formData.set("username", "Chris");
```


値が `Blob`（または `File`）である場合、その名前を `filename` で指定することができます。


```js
formData.set("userpic", myFileInput.files[0], "chris.jpg");
```


この値が文字列または `Blob` でない場合、`set()` は自動的にそれを文字列に変換します。


```js
formData.set("name", 72);
formData.get("name"); // "72"
```

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata-set |

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: entries() メソッド
========================

**`FormData.entries()`** メソッドは、この `FormData` に含まれているすべてのキー/値のペアを走査するイテレーターを返します。それぞれのペアのキーは文字列オブジェクトで、値は文字列または `Blob` のどちらかです。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
entries()
```

### 引数

なし。

### 返値

`FormData` のキー/値のペアのイテレーターです。

例
-


```js
formData.append("key1", "value1");
formData.append("key2", "value2");

// キー/値のペアを表示
for (const pair of formData.entries()) {
  console.log(`${pair[0]}, ${pair[1]}`);
}
```


結果は次のとおりです。
```

key1, value1
key2, value2
```

仕様書
---

#### No specification found

No specification data found for `api.FormData.entries`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: get() メソッド
====================

**`get()`** は `FormData` インターフェイスのメソッドで、`FormData` オブジェクトの中から、指定されたキーに関連付けられた最初の値を返します。。複数の値を期待し、すべてが欲しい場合は、代わりに `getAll()` メソッドを使用してください。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
get(name)
```

### 引数

`name`

取得したいキーの名前を表す文字列です。

### 返値

指定された `name` に一致するキーの値です。見つからなければ `null` です。

例
-

2 つの `username` 値を `FormData` に、`append()` を使って追加した場合、


```js
formData.append("username", "Chris");
formData.append("username", "Bob");
```


次の `get()` メソッドは最初の `username` 値のみを返します。


```js
formData.get("username"); // "Chris" を返す
```

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata-get |

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: has() メソッド
====================

**`has()`** は `FormData` インターフェイスのメソッドで、`FormData` オブジェクトに指定されたキーがあるかどうかを返します。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
has(name)
```

### 引数

`name`

検査を行うキーの名前を表す文字列です。

### 返値

`FormData` に `name` と一致するキーがあれば `true` です。そうでなければ `false` です。

例
-

以下のスニペットは、`FormData` オブジェクトの `username` の値を `append()` で追加する前と後で `username` が存在するかどうかテストした結果を示します。


```js
formData.has("username"); // false を返す
formData.append("username", "Chris");
formData.has("username"); // true を返す
```

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata-has |

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: getAll() メソッド
=======================

**`getAll()`** は `FormData` インターフェイスのメソッドで、`FormData` オブジェクト内から指定されたキーに関連付けられたすべての値を返します。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
getAll(name)
```

### 引数

`name`

取得したいキーの名前を表す文字列です。

### 返値

キーが指定した `name` と一致する値の配列です。そうでない場合は、空のリストです。

例
-

`FormData` に、`append()` を用いて `username` の値を 2 つ追加したとします。


```js
formData.append("username", "Chris");
formData.append("username", "Bob");
```


以下の `getAll()` メソッドは、配列で `username` の値を両方とも返します。


```js
formData.getAll("username"); // Returns ["Chris", "Bob"]
```

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata-getall |

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: values() メソッド
=======================

**`FormData.values()`** メソッドは、この `FormData` に含まれるすべての値を走査するイテレーターを返します。値は文字列または `Blob` オブジェクトです。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
values()
```

### 引数

なし。

### 返値

この `FormData` の値のイテレーターです。

例
-


```js
const formData = new FormData();
formData.append("key1", "value1");
formData.append("key2", "value2");

// 値を表示
for (const value of formData.values()) {
  console.log(value);
}
```


結果は次のとおりです。
```

value1
value2
```

仕様書
---

#### No specification found

No specification data found for `api.FormData.values`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
FormData: append() メソッド
=======================

**`append()`** は `FormData` インターフェイスのメソッドで、`FormData` オブジェクト内の既存のキーに新しい値を追加します。キーがまだ存在しない場合は追加します。

`set()` と `append()` の違いは、指定されたキーが既に存在する場合、`set()` は既存のすべての値を新しい値で上書きすることです。 一方、`append()` は、既存の値のセットの最後に新しい値を追加します。

**メモ:** このメソッドはウェブワーカーで使用できます。

構文
--


```js
append(name, value)
append(name, value, filename)
```

### 引数

`name`

`value` にあるデータのフィールド名です。

`value`

フィールドの値です。文字列または `Blob`（`File` などのサブクラスを含む）です。これらの何れでもないものが指定された場合、値は文字列に変換されます。

`filename` 省略可

第 2 引数に `Blob` または `File` を渡した場合に、サーバーに報告されるファイル名（文字列）です。`Blob` オブジェクトの既定のファイル名は "blob" です。`File` オブジェクトの既定値は、ファイルのファイル名です。


**メモ:** `FormData` オブジェクトに追加するデータとして `Blob` を指定した場合、"Content-Disposition" ヘッダーでサーバーに報告されるファイル名はブラウザーによって異なることがあります。

### 返値

なし (`undefined`)。

例
-


```js
formData.append("username", "Chris");
```


値が `Blob` （または `File`）である場合、`filename` 引数でそのファイル名を指定します。


```js
formData.append("userpic", myFileInput.files[0], "chris.jpg");
```


通常のフォームデータと同様に、同じ名前の複数の値を追加することができます。


```js
formData.append("userpic", myFileInput.files[0], "chris1.jpg");
formData.append("userpic", myFileInput.files[1], "chris2.jpg");
```


値が文字列でも `Blob` でもない場合、`append()` は自動的に文字列に変換します。


```js
formData.append("name", true);
formData.append("name", 72);
formData.getAll("name"); // ["true", "72"]
```

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # dom-formdata-append |

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

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

関連情報
----

* FormData オブジェクトの使用
* `<form>`
AudioBuffer()
=============

**`AudioBuffer`** はウェブオーディオ API のコンストラクターで、新しい `AudioBuffer` オブジェクトを生成します。

構文
--


```js
new AudioBuffer(options);
```

### 引数

`options`

オプションは次の通りです。

* `length`: オーディオバッファーのサイズ（サンプルフレーム単位）。特定の秒数の音声に使用する `length` を決定するには、`numSeconds * sampleRate` を使用してください。
* `numberOfChannels`: バッファーのチャンネル数です。既定値は 1 で、すべてのユーザーエージェントは最低でも 32 チャンネルを対応する必要があります。
* サンプリングレート `sampleRate`: バッファーのサンプリングレート（単位: Hz）。既定では、このオブジェクトを作成する際に使用した `context` のサンプリングレートになります。ユーザーエージェントは 8,000 Hz から 96,000 Hz までのサンプリングレートに対応する必要があります（ただし、この範囲外でもかまいません）。
* `channelCount`: ノードへの任意の入力にアップミキシング・ダウンミキシング接続する際に使用するチャンネル数を決めるための整数を表します。
 （詳しくは `AudioNode.channelCount` を参照してください。）その使い方や正確な定義は `channelCountMode` の値に依存します。
* `channelCountMode`: ノードの入力と出力の間でチャンネルを一致させる方法を記述する列挙型の値を表します。（既定値を含む詳細は `AudioNode.channelCountMode` を参照してください。）
* `channelInterpretation`: チャンネルの意味を記述した列挙型の値を表します。この解釈により、音声の[アップミキシングとダウンミキシング](/ja/docs/Web/API/Web\_Audio\_API/Basic\_concepts\_behind\_Web\_Audio\_API#up-mixing\_ and\_down-mixing)がどのように行われるかが定義されることになります。
 指定可能な値は `"speakers"` または `"discrete"` です。（既定値を含むより詳細な情報については `AudioNode.channelCountMode` を参照してください。）

#### 非推奨の引数

`context` 
非推奨

`AudioContext` への参照です。この引数は仕様書から削除されました。

### 返値

新しい `AudioBuffer` オブジェクトのインスタンスです。

### 例外

`NotSupportedError` `DOMException`

1 つ以上のオプションが負の値であるか、あるいは無効な値である場合（例えば `numberOfChannels` がサポートされているよりも大きい、あるいは `sampleRate` が公称範囲外であるなど）に発生します。

`RangeError` `DOMException`

バッファーを割り当てるのに十分なメモリーがない場合に発生します。

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-audiobuffer-audiobuffer |

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

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

**`length`** は `AudioBuffer` インターフェイスのプロパティで、バッファーに格納された PCM データの長さをサンプルフレーム数で表す整数を返します。

値
-

整数です。

例
-


```js
// ステレオ
var channels = 2;

// AudioContext のサンプルレートで 2 秒間の空のステレオバッファーを生成する
var frameCount = audioCtx.sampleRate \* 2.0;
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);

button.onclick = function () {
  // バッファーにホワイトノイズを書き込む
  // 単なる -1.0 から 1.0 の間の乱数の値である
  for (var channel = 0; channel < channels; channel++) {
    // 実際のデータの配列を得る
    var nowBuffering = myArrayBuffer.getChannelData(channel);
    for (var i = 0; i < frameCount; i++) {
      // Math.random() は [0; 1.0] である
      // 音声は [-1.0; 1.0] である必要がある
      nowBuffering[i] = Math.random() \* 2 - 1;
    }
  }

  console.log(myArrayBuffer.length);
};
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-audiobuffer-length |

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

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

関連情報
----

* ウェブオーディオ API の使用
AudioBuffer.numberOfChannels
============================

`numberOfChannels` は `AudioBuffer` インターフェイスのプロパティで、バッファーに格納された PCM データのチャンネルの数を整数で返します。

値
-

整数です。

例
-


```js
// ステレオ
var channels = 2;

// AudioContext のサンプルレートで2秒間の空のステレオバッファを生成する
var frameCount = audioCtx.sampleRate \* 2.0;
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);

button.onclick = function () {
  // バッファにホワイトノイズを書き込む;
  // 単なる -1.0 から 1.0 の間の乱数の値である
  for (var channel = 0; channel < channels; channel++) {
    // 実際のデータの配列を得る
    var nowBuffering = myArrayBuffer.getChannelData(channel);
    for (var i = 0; i < frameCount; i++) {
      // Math.random() は [0; 1.0] である
      // 音声は [-1.0; 1.0] である必要がある
      nowBuffering[i] = Math.random() \* 2 - 1;
    }
  }

  console.log(myArrayBuffer.numberOfChannels);
};
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-audiobuffer-numberofchannels |

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

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

関連情報
----

* ウェブオーディオ API の使用
AudioBuffer.duration
====================

**`duration`** は `AudioBuffer` インターフェイスのプロパティで、バッファーに格納された PCM データの再生時間を秒数で表す double 値を返します。

値
-

double 値です。

例
-


```js
// ステレオ
var channels = 2;

// AudioContext のサンプルレートで 2 秒間の空のステレオバッファを生成する
var frameCount = audioCtx.sampleRate \* 2.0;
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);

button.onclick = function () {
  // バッファにホワイトノイズを書き込む
  // 単なる -1.0 から 1.0 の間の乱数の値である
  for (var channel = 0; channel < channels; channel++) {
    // 実際のデータの配列を得る
    var nowBuffering = myArrayBuffer.getChannelData(channel);
    for (var i = 0; i < frameCount; i++) {
      // Math.random() は [0; 1.0] である
      // 音声は [-1.0; 1.0] である必要がある
      nowBuffering[i] = Math.random() \* 2 - 1;
    }
  }

  console.log(myArrayBuffer.duration);
};
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-audiobuffer-duration |

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

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

関連情報
----

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

**`sampleRate`** は `AudioBuffer` インターフェイスのプロパティで、バッファーに格納された PCM データの 1 秒あたりのサンプル数を、サンプルレートとして float で返します。

値
-

バッファーデータの現在のサンプルレートを示す浮動小数点値で、サンプル/秒単位です。

例
-


```js
// ステレオ
var channels = 2;

// AudioContext のサンプルレートで 2 秒間の空のステレオバッファを生成する
var frameCount = audioCtx.sampleRate \* 2.0;
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);

button.onclick = function () {
  // バッファにホワイトノイズを書き込む;
  // 単なる -1.0 から 1.0 の間の乱数の値である
  for (var channel = 0; channel < channels; channel++) {
    // 実際のデータの配列を得る
    var nowBuffering = myArrayBuffer.getChannelData(channel);
    for (var i = 0; i < frameCount; i++) {
      // Math.random() は [0; 1.0] である
      // 音声は [-1.0; 1.0] である必要がある
      nowBuffering[i] = Math.random() \* 2 - 1;
    }
  }

  console.log(myArrayBuffer.sampleRate);
};
```

仕様書
---

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

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

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

関連情報
----

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

`copyToChannel()` は `AudioBuffer` インターフェイスのメソッドで、元の配列から指定の `AudioBuffer` のチャンネルへとコピーします。

構文
--


```js
copyToChannel(source, channelNumber, startInChannel);
```

### 引数

source

コピー元となるチャンネルデータの `Float32Array` です。

channelNumber

チャンネルデータのコピー先となる現在の `AudioBuffer` のチャンネル番号です。 *channelNumber* が `AudioBuffer.numberOfChannels` 以上の場合は `INDEX_SIZE_ERR` 例外が発生します。

startInChannel 省略可

オプションで、データをコピーする先のオフセット位置です。 *startInChannel* が `AudioBuffer.length` より大きければ、 `INDEX_SIZE_ERR` 例外が発生します。

例
-


```js
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);
var anotherArray = new Float32Array();
// myArrayBuffer の 2 番目のチャンネルからコピーする
myArrayBuffer.copyFromChannel(anotherArray, 1, 0);
// anotherArray から、 myArrayBuffer の 1 番目のチャンネルにコピーする。これで 2 つのチャンネルのデータは同じになる
myArrayBuffer.copyToChannel(anotherArray, 0, 0);
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-audiobuffer-copytochannel |

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

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

関連情報
----

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