ScriptProcessorNode: audioprocess イベント
非推奨: この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。
ScriptProcessorNode
インターフェイスの audioprocess
イベントは、スクリプトプロセッサーの入力バッファーが処理される準備ができた時発火します。
メモ: この機能は AudioWorklets および AudioWorkletNode
インターフェイスに置き換えられました。
このイベントはキャンセル不可で、バブルしません。
イベント型
AudioProcessingEvent
です。Event
を継承しています。
イベントプロパティ
親の Event
から継承したプロパティも実装しています。
playbackTime
読取専用-
音声が再生される時間を表す
double
の値です。AudioContext.currentTime
の時間として定義されます。 inputBuffer
読取専用-
処理対象の入力音声データが格納されたバッファーの
AudioBuffer
です。 チャンネル数はファクトリーメソッドAudioContext.createScriptProcessor()
の引数numberOfInputChannels
で指定した数です。 返されるAudioBuffer
はイベントハンドラーのスコープでのみ有効であることに注意してください。 outputBuffer
読取専用-
出力音声データを格納する先であるバッファーの
AudioBuffer
です。 チャンネル数はファクトリーメソッドAudioContext.createScriptProcessor()
の引数numberOfOutputChannels
で指定した数です。 返されるAudioBuffer
はイベントハンドラーのスコープでのみ有効であることに注意してください。
例
scriptNode.addEventListener("audioprocess", (audioProcessingEvent) => {
// 入力バッファーは、前に読み込んだ歌です
const inputBuffer = audioProcessingEvent.inputBuffer;
// 出力バッファーには、変更されて再生されるサンプルが入ります
const outputBuffer = audioProcessingEvent.outputBuffer;
// 出力の各チャンネルについてループします (今回は 1 個のみ)
for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
const inputData = inputBuffer.getChannelData(channel);
const outputData = outputBuffer.getChannelData(channel);
// 4096 個のサンプルについてループします
for (let sample = 0; sample < inputBuffer.length; sample++) {
// 出力を入力と同じにします
outputData[sample] = inputData[sample];
// 出力の各サンプルにノイズを加えます
outputData[sample] += (Math.random() * 2 - 1) * 0.2;
}
}
});
イベントハンドラーを onaudioprocess
プロパティを用いて設定することもできます。
scriptNode.onaudioprocess = (audioProcessingEvent) => {
// ...
};
仕様書
2014 年 8 月 29 日の Web Audio API specification の発行以降、この機能は非推奨になりました。この機能は標準化を検討されていません。
この機能は AudioWorklets および AudioWorkletNode
インターフェイスに置き換えられました。
ブラウザーの互換性
BCD tables only load in the browser