--- title: AudioContext.createScriptProcessor() slug: Web/API/BaseAudioContext/createScriptProcessor translation_of: Web/API/BaseAudioContext/createScriptProcessor original_slug: Web/API/AudioContext/createScriptProcessor ---
{{ APIRef("AudioContext") }}
{{ domxref("AudioContext") }} の createScriptProcessor() メソッドを利用することで、ダイレクトな音声処理ができる {{domxref("ScriptProcessorNode")}} オブジェクトを作成できます。
注意: このノードの利用方法に関しては {{domxref("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();
}
bufferSizeaudioprocess イベントの発生頻度と、イベントごとに渡されるサンプルフレームの大きさを決めます。小さい値を指定すると低遅延となり、大きな値を指定すると音声の破損やグリッチを避けられます。この値は自分で決めず、実装に決めさせることが遅延と品質の面から推奨されます。numberOfInputChannelsnumberOfOutputChannelsImportant: Webkit currently (version 31) requires that a valid bufferSize be passed when calling this method.
注意: numberOfInputChannels と numberOfOutputChannels の両方に 0 を指定することはできません。
A {{domxref("ScriptProcessorNode")}}.
{{page("/en-US/docs/Web/API/AudioContext","Browser_compatibility")}}
{{page("/en-US/docs/Web/API/AudioContext","Specifications")}}
{{page("/en-US/docs/Web/API/AudioContext","See_also")}}