AudioContext.createScriptProcessor()

AudioContext の createScriptProcessor() メソッドを利用することで、ダイレクトな音声処理ができる ScriptProcessorNode オブジェクトを作成できます。

注意: このノードの利用方法に関しては ScriptProcessorNode をご覧ください。

構文

 ScriptProcessorNode             createScriptProcessor (optional unsigned long bufferSize = 0 , optional unsigned long numberOfInputChannels = 2 , optional unsigned long numberOfOutputChannels = 2 );

createScriptProcessor()の利用例は以下の通りになります。Web Audio API が提供する機能では望む音声処理を実現できない場合に、このメソッドを利用します。これを利用することで、どの様な音声処理でも記述できます。

SineWave = function(context) {
  var that = this;
  this.x = 0; // Initial sample number
  this.context = context;
  this.node = context.createScriptProcessor(1024, 1, 1);
  this.node.onaudioprocess = function(e) { that.process(e) };
}

SineWave.prototype.process = function(e) {
  var data = e.outputBuffer.getChannelData(0);
  for (var i = 0; i < data.length; ++i) {
    data[i] = Math.sin(this.x++);
  }
}

SineWave.prototype.play = function() {
  this.node.connect(this.context.destination);
}

SineWave.prototype.pause = function() {
  this.node.disconnect();
}

引数

bufferSize
サンプルフレームを単位としたバッファのサイズです。指定する場合は、次のいずれかの値でなくてはなりません: 256, 512, 1024, 2048, 4096, 8192, 16384 。指定されない場合、もしくは 0 が指定された場合、環境における最適な値が設定されます。この値はノードが生存する限り同じ値が利用され、その値は 2 の冪上です。
この値は audioprocess イベントの発生頻度と、イベントごとに渡されるサンプルフレームの大きさを決めます。小さい値を指定すると低遅延となり、大きな値を指定すると音声の破損やグリッチを避けられます。この値は自分で決めず、実装に決めさせることが遅延と品質の面から推奨されます。
numberOfInputChannels
入力のチャンネル数を整数で指定します。デフォルト値は 2 で、最大 32 チャンネルまでサポートします。
numberOfOutputChannels
出力するチャンネル数を整数で指定します。デフォルト値は 2 で、最大 32 チャンネルまでサポートします。

Important: Webkit currently (version 31) requires that a valid bufferSize be passed when calling this method.

注意: numberOfInputChannelsnumberOfOutputChannels の両方に 0 を指定することはできません。

返り値

A ScriptProcessorNode.

ブラウザ互換性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support

35

14 — 57 webkit

Yes25 No

22

15 — 44 webkit

6 webkit
AudioContext() constructor551 2 Yes25 No42 Yes webkit
baseLatency58 ? No No45 No
outputLatency No ? No No No No
close42 ?40 No Yes ?
createMediaElementSource141225 No156
createMediaStreamSource141225 No156
createMediaStreamDestination14 Yes25 No156
createMediaStreamTrackSource ? ? No No ? No
getOutputTimestamp57 ? No No44 No
suspend43 ?40 No Yes ?
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes

35

18 — 57 webkit

Yes26

22

15 — 44 webkit

?

Yes

Yes — 7.0 webkit

AudioContext() constructor55551 2 ?2542 ?6.0
baseLatency5858 ? No45 No No
outputLatency No No ? No No ? No
close4343 ?40 Yes ?4.0
createMediaElementSource Yes18 Yes2615 ? Yes
createMediaStreamSource Yes18 Yes2615 ? Yes
createMediaStreamDestination Yes18 Yes2615 ? Yes
createMediaStreamTrackSource ? ? ? No ? No ?
getOutputTimestamp5757 ? No44 No7.0
suspend4343 ?40 Yes ?4.0

1. Each tab is limited to 6 audio contexts in Chrome; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.

2. If latencyHint isn't valid, Chrome throws a TypeError exception. See Non-standard exceptions in Chrome for details.

仕様

Specification Status Comment
Web Audio API
The definition of 'AudioContext' in that specification.
Working Draft  

関連情報

ドキュメントのタグと貢献者

このページの貢献者: fscholz, nshimizu
最終更新者: nshimizu,