diff --git a/files/ja/web/api/audioprocessingevent/audioprocessingevent/index.md b/files/ja/web/api/audioprocessingevent/audioprocessingevent/index.md
new file mode 100644
index 00000000000000..15004df5760a8d
--- /dev/null
+++ b/files/ja/web/api/audioprocessingevent/audioprocessingevent/index.md
@@ -0,0 +1,50 @@
+---
+title: "AudioProcessingEvent: AudioProcessingEvent() コンストラクター"
+short-title: AudioProcessingEvent()
+slug: Web/API/AudioProcessingEvent/AudioProcessingEvent
+l10n:
+ sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2
+---
+
+{{APIRef}}{{Deprecated_header}}
+
+**`AudioProcessingEvent()`** コンストラクターは、constructor creates a new {{domxref("AudioProcessingEvent")}} object.
+
+> **メモ:** 通常、このコンストラクターはコードから直接呼び出されることはありません。ブラウザー自身がオブジェクトを作成し、イベントハンドラーに提供するからです。
+
+## 構文
+
+```js-nolint
+new AudioProcessingEvent(type, options)
+```
+
+### 引数
+
+- `type`
+ - : 文字列で、このイベントの名前です。
+ 大文字小文字の区別があり、ブラウザーは常に `audioprocess` と設定します。
+- `options`
+ - : 以下のプロパティを持つオブジェクトです。
+ - `playbackTime`
+ - : 数値で、音声が再生される時を表します。
+ - `inputBuffer`
+ - : {{domxref("AudioBuffer")}} で、入力する音声データが入ります。
+ - `outputBuffer`
+ - : {{domxref("AudioBuffer")}} で、出力する音声データが書き込まれるところです。
+
+### 返値
+
+新しい {{domxref("AudioProcessingEvent")}} です。
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
+
+## 関連情報
+
+- {{domxref("AudioProcessingEvent")}}
+- {{domxref("ScriptProcessorNode")}}
diff --git a/files/ja/web/api/audioprocessingevent/index.md b/files/ja/web/api/audioprocessingevent/index.md
index ed6f0f0c356f19..be00b658c2b0cd 100644
--- a/files/ja/web/api/audioprocessingevent/index.md
+++ b/files/ja/web/api/audioprocessingevent/index.md
@@ -1,39 +1,119 @@
---
title: AudioProcessingEvent
slug: Web/API/AudioProcessingEvent
+l10n:
+ sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc
---
-{{APIRef("Web Audio API")}}
+{{APIRef("Web Audio API")}}{{deprecated_header}}
-[ウェブオーディオ API](/ja/docs/Web/API/Web_Audio_API) の `AudioProcessingEvent` は {{domxref("ScriptProcessorNode")}} 入力バッファーが処理可能な状態になったときに発生するイベントを表します。
+`AudioProcessingEvent` は[ウェブオーディオ API](/ja/docs/Web/API/Web_Audio_API) のインターフェイスで、{{domxref("ScriptProcessorNode")}} 入力バッファーが処理可能な状態になったときに発生するイベントを表します。
-> **メモ:** 2014 年 8 月 29 日のウェブオーディオ API 仕様書公開時点で、この機能は非推奨とされ、まもなく [AudioWorklet](https://webaudio.github.io/web-audio-api/#audioworklet) に置き換わる予定です。
+このインターフェイスを持つ `audioprocess` イベントは、音声処理が必要なときに {{domxref("ScriptProcessorNode")}} で発生します。音声処理中、入力バッファーが読み込まれ、処理されて出力音声データが生成され、出力バッファーに書き込まれます。
+
+> **警告:** この機能は非推奨となったので、[`AudioWorklet`](/ja/docs/Web/API/AudioWorklet) で置き換えてください。
{{InheritanceDiagram}}
## コンストラクター
-- `AudioProcessingEvent()`
+- {{domxref("AudioProcessingEvent.AudioProcessingEvent", "AudioProcessingEvent()")}} {{Deprecated_Inline}}
- : 新しい `AudioProcessingEvent` オブジェクトを生成します。
-## プロパティ
+## インスタンスプロパティ
_親プロパティである {{domxref("Event")}} から継承されたプロパティも実装しています_。
-- `playbackTime` {{ReadOnlyInline}}
+- {{domxref("AudioProcessingEvent.playbackTime", "playbackTime")}} {{ReadOnlyInline}} {{Deprecated_Inline}}
- : double 型で、音声が再生される時間を表します。 {{domxref("BaseAudioContext/currentTime", "AudioContext.currentTime")}} の時刻で定義されます。
-- `inputBuffer` {{ReadOnlyInline}}
+- {{domxref("AudioProcessingEvent.inputBuffer", "inputBuffer")}} {{ReadOnlyInline}} {{Deprecated_Inline}}
- : 処理する入力音声データを含むバッファーである {{domxref("AudioBuffer")}} を指定します。
チャンネル数はファクトリーメソッド {{domxref("BaseAudioContext/createScriptProcessor", "AudioContext.createScriptProcessor()")}} の引数 `numberOfInputChannels` として定義されています。
なお、返された AudioBuffer
は、イベントハンドラーのスコープ内のみで有効であることに注意してください。
-- `outputBuffer` {{ReadOnlyInline}}
+- {{domxref("AudioProcessingEvent.outputBuffer", "outputBuffer")}} {{ReadOnlyInline}} {{Deprecated_Inline}}
- : 出力する音声データを書き込むバッファーである {{domxref("AudioBuffer")}} を指定します。
チャンネル数はファクトリーメソッド {{domxref("BaseAudioContext/createScriptProcessor", "AudioContext.createScriptProcessor()")}} の引数 numberOutputChannels
として定義されています。
なお、返された AudioBuffer
は、イベントハンドラーのスコープ内のみで有効であることに注意してください。
## 例
-`AudioProcessingEvent` を使用したコード例は [`BaseAudioContext.createScriptProcessor()`](/ja/docs/Web/API/BaseAudioContext/createScriptProcessor#例) を参照してください。
+次の例は、`ScriptProcessorNode` を使用して、{{domxref("BaseAudioContext/decodeAudioData", "AudioContext.decodeAudioData()")}} で読み込んだ音声を{{domxref("AudioDestinationNode")}} で処理し、入力トラック(バッファー)の各音声サンプルにホワイトノイズを追加し、{{domxref("AudioDestinationNode")}} を通して再生する方法を示しています。 各チャンネルと各サンプルフレームに対して、`scriptNode.onaudioprocess` 関数は関連する `audioProcessingEvent` を受け取り、それを用いて入力バッファー内の各チャンネルと各チャンネル内の各サンプルをループし、少量のホワイトノイズを追加してから、その結果をそれぞれのケースで出力サンプルに設定します。
+
+> **メモ:** 完全な動作する例は、GitHub の [script-processor-node](https://mdn.github.io/webaudio-examples/script-processor-node/) リポジトリーを参照してください([ソースコード](https://github.com/mdn/webaudio-examples/blob/master/script-processor-node/index.html)にもアクセスできます)。
+
+```js
+const myScript = document.querySelector("script");
+const myPre = document.querySelector("pre");
+const playButton = document.querySelector("button");
+
+// Create AudioContext and buffer source
+const audioCtx = new AudioContext();
+const source = audioCtx.createBufferSource();
+
+// Create a ScriptProcessorNode with a bufferSize of 4096 and a single input and output channel
+const scriptNode = audioCtx.createScriptProcessor(4096, 1, 1);
+console.log(scriptNode.bufferSize);
+
+// load in an audio track via XHR and decodeAudioData
+
+function getData() {
+ request = new XMLHttpRequest();
+ request.open("GET", "viper.ogg", true);
+ request.responseType = "arraybuffer";
+ request.onload = () => {
+ const audioData = request.response;
+
+ audioCtx.decodeAudioData(
+ audioData,
+ (buffer) => {
+ myBuffer = buffer;
+ source.buffer = myBuffer;
+ },
+ (e) => console.error(`Error with decoding audio data: ${e.err}`),
+ );
+ };
+ request.send();
+}
+
+// Give the node a function to process audio events
+scriptNode.onaudioprocess = (audioProcessingEvent) => {
+ // The input buffer is the song we loaded earlier
+ const inputBuffer = audioProcessingEvent.inputBuffer;
+
+ // The output buffer contains the samples that will be modified and played
+ const outputBuffer = audioProcessingEvent.outputBuffer;
+
+ // Loop through the output channels (in this case there is only one)
+ for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
+ const inputData = inputBuffer.getChannelData(channel);
+ const outputData = outputBuffer.getChannelData(channel);
+
+ // Loop through the 4096 samples
+ for (let sample = 0; sample < inputBuffer.length; sample++) {
+ // make output equal to the same as the input
+ outputData[sample] = inputData[sample];
+
+ // add noise to each output sample
+ outputData[sample] += (Math.random() * 2 - 1) * 0.2;
+ }
+ }
+};
+
+getData();
+
+// Wire up the play button
+playButton.onclick = () => {
+ source.connect(scriptNode);
+ scriptNode.connect(audioCtx.destination);
+ source.start();
+};
+
+// When the buffer source stops playing, disconnect everything
+source.onended = () => {
+ source.disconnect(scriptNode);
+ scriptNode.disconnect(audioCtx.destination);
+};
+```
## ブラウザーの互換性
diff --git a/files/ja/web/api/audioprocessingevent/inputbuffer/index.md b/files/ja/web/api/audioprocessingevent/inputbuffer/index.md
new file mode 100644
index 00000000000000..839f8805354d97
--- /dev/null
+++ b/files/ja/web/api/audioprocessingevent/inputbuffer/index.md
@@ -0,0 +1,56 @@
+---
+title: "AudioProcessingEvent: inputBuffer プロパティ"
+short-title: inputBuffer
+slug: Web/API/AudioProcessingEvent/inputBuffer
+l10n:
+ sourceCommit: 135b8311a5e3d12789e8421845be3ce026ef72b8
+---
+
+{{APIRef}}{{Deprecated_header}}
+
+**`inputBuffer`** は {{domxref("AudioProcessingEvent")}} インターフェイスの読み取り専用プロパティで、音声処理イベントの入力バッファーを表します。
+
+入力バッファーは {{domxref("AudioBuffer")}} オブジェクトで表されます。このオブジェクトは音声チャンネルの集合を格納し、各チャンネルは一連の振幅としてエンコードされた音声信号波形を表す浮動小数点数の値の配列です。チャンネルの数と各チャンネルの長さは `AudioBuffer` のチャンネル数とバッファーサイズのプロパティによって決まります。
+
+## 値
+
+{{domxref("AudioBuffer")}} オブジェクトです。
+
+## 例
+
+この例では、{{domxref("ScriptProcessorNode")}} が 256 サンプルのバッファーサイズ、2 つの入力チャンネル、2 つの出力チャンネルで作成されています。{{domxref("ScriptProcessorNode/audioprocess_event", "audioprocess")}} イベントが発行されると、入力バッファーと出力バッファーがイベントオブジェクトから取得されます。入力バッファー内の音声データが処理され、結果が出力バッファーに書き込まれます。この場合、音声データは 0.5 倍に縮小されます。
+
+```js
+const audioContext = new AudioContext();
+const processor = audioContext.createScriptProcessor(256, 2, 2);
+
+processor.addEventListener("audioprocess", (event) => {
+ const inputBuffer = event.inputBuffer;
+ const outputBuffer = event.outputBuffer;
+
+ for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
+ const inputData = inputBuffer.getChannelData(channel);
+ const outputData = outputBuffer.getChannelData(channel);
+
+ // Process the audio data here
+ for (let i = 0; i < outputBuffer.length; i++) {
+ outputData[i] = inputData[i] * 0.5;
+ }
+ }
+});
+
+processor.connect(audioContext.destination);
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
+
+## 関連情報
+
+- {{domxref("AudioProcessingEvent.outputBuffer")}}
+- {{domxref("ScriptProcessorNode")}}
diff --git a/files/ja/web/api/audioprocessingevent/outputbuffer/index.md b/files/ja/web/api/audioprocessingevent/outputbuffer/index.md
new file mode 100644
index 00000000000000..215ee7d0e102c0
--- /dev/null
+++ b/files/ja/web/api/audioprocessingevent/outputbuffer/index.md
@@ -0,0 +1,56 @@
+---
+title: "AudioProcessingEvent: outputBuffer プロパティ"
+short-title: outputBuffer
+slug: Web/API/AudioProcessingEvent/outputBuffer
+l10n:
+ sourceCommit: 135b8311a5e3d12789e8421845be3ce026ef72b8
+---
+
+{{APIRef}}{{Deprecated_header}}
+
+**`outputBuffer`** は {{domxref("AudioProcessingEvent")}} インターフェイスの読み取り専用プロパティで、音声処理イベントの出力バッファーを表します。
+
+出力バッファーは {{domxref("AudioBuffer")}} オブジェクトで表されます。このオブジェクトは音声チャンネルの集合を格納し、各チャンネルは一連の振幅としてエンコードされた音声信号波形を表す浮動小数点数の値の配列です。チャンネルの数と各チャンネルの長さは `AudioBuffer` のチャンネル数とバッファーサイズのプロパティによって決まります。
+
+## 値
+
+{{domxref("AudioBuffer")}} オブジェクトです。
+
+## 例
+
+この例では、{{domxref("ScriptProcessorNode")}} が 256 サンプルのバッファーサイズ、2 つの入力チャンネル、2 つの出力チャンネルで作成されています。{{domxref("ScriptProcessorNode/audioprocess_event", "audioprocess")}} イベントが発行されると、入力バッファーと出力バッファーがイベントオブジェクトから取得されます。入力バッファー内の音声データが処理され、結果が出力バッファーに書き込まれます。この場合、音声データは 0.5 倍に縮小されます。
+
+```js
+const audioContext = new AudioContext();
+const processor = audioContext.createScriptProcessor(256, 2, 2);
+
+processor.addEventListener("audioprocess", (event) => {
+ const inputBuffer = event.inputBuffer;
+ const outputBuffer = event.outputBuffer;
+
+ for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
+ const inputData = inputBuffer.getChannelData(channel);
+ const outputData = outputBuffer.getChannelData(channel);
+
+ // Process the audio data here
+ for (let i = 0; i < outputBuffer.length; i++) {
+ outputData[i] = inputData[i] * 0.5;
+ }
+ }
+});
+
+processor.connect(audioContext.destination);
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
+
+## 関連情報
+
+- {{domxref("AudioProcessingEvent.inputBuffer")}}
+- {{domxref("ScriptProcessorNode")}}
diff --git a/files/ja/web/api/audioprocessingevent/playbacktime/index.md b/files/ja/web/api/audioprocessingevent/playbacktime/index.md
new file mode 100644
index 00000000000000..915460d07c80a9
--- /dev/null
+++ b/files/ja/web/api/audioprocessingevent/playbacktime/index.md
@@ -0,0 +1,55 @@
+---
+title: "AudioProcessingEvent: playbackTime プロパティ"
+short-title: playbackTime
+slug: Web/API/AudioProcessingEvent/playbackTime
+l10n:
+ sourceCommit: 135b8311a5e3d12789e8421845be3ce026ef72b8
+---
+
+{{APIRef}}{{Deprecated_header}}
+
+**`playbackTime`** は {{domxref("AudioProcessingEvent")}} インターフェイスのプロパティで、音声が再生される時間を表します。 これは {{domxref("AudioContext")}} が使用している時間と同じ座標系です。
+
+## 値
+
+数値で、整数とは限りません。
+
+## 例
+
+```js
+const audioContext = new AudioContext();
+const processor = audioContext.createScriptProcessor(256, 2, 2);
+
+processor.addEventListener("audioprocess", (event) => {
+ const inputBuffer = event.inputBuffer;
+ const outputBuffer = event.outputBuffer;
+
+ for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
+ const inputData = inputBuffer.getChannelData(channel);
+ const outputData = outputBuffer.getChannelData(channel);
+
+ // Log the corresponding time for this audio buffer
+ console.log(`Received audio data to be played at ${event.playbackTime}`);
+
+ // Process the audio data here
+ for (let i = 0; i < outputBuffer.length; i++) {
+ outputData[i] = inputData[i] * 0.5;
+ }
+ }
+});
+
+processor.connect(audioContext.destination);
+```
+
+## 仕様書
+
+{{Specifications}}
+
+## ブラウザーの互換性
+
+{{Compat}}
+
+## 関連情報
+
+- {{domxref("AudioProcessingEvent")}}
+- {{domxref("ScriptProcessorNode")}}