1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
---
title: AudioContext.createScriptProcessor()
slug: Web/API/AudioContext/createScriptProcessor
translation_of: Web/API/BaseAudioContext/createScriptProcessor
---
<p>{{ APIRef("AudioContext") }}</p>
<div class="summary">
<p><span class="seoSummary">{{ domxref("AudioContext") }} の createScriptProcessor() メソッドを利用することで、ダイレクトな音声処理ができる {{domxref("ScriptProcessorNode")}} オブジェクトを作成できます。</span></p>
</div>
<div class="note">
<p><strong>注意</strong>: このノードの利用方法に関しては {{domxref("ScriptProcessorNode")}} をご覧ください。</p>
</div>
<h2 id="構文">構文</h2>
<pre class="syntaxbox"><code><em><span class="idlInterface" id="idl-def-AudioContext"><span class="idlMethod"> <span class="idlMethType"><a class="idlType" href="http://webaudio.github.io/web-audio-api/#idl-def-ScriptProcessorNode"><code>ScriptProcessorNode</code></a></span> <span class="idlMethName"><a href="http://webaudio.github.io/web-audio-api/#widl-AudioContext-createScriptProcessor-ScriptProcessorNode-unsigned-long-bufferSize-unsigned-long-numberOfInputChannels-unsigned-long-numberOfOutputChannels">createScriptProcessor</a></span> (<span class="idlParam">optional <span class="idlParamType">unsigned long</span> <span class="idlParamName">bufferSize</span> = <span class="idlDefaultValue">0 </span></span>, <span class="idlParam">optional <span class="idlParamType">unsigned long</span> <span class="idlParamName">numberOfInputChannels</span> = <span class="idlDefaultValue">2 </span></span>, <span class="idlParam">optional <span class="idlParamType">unsigned long</span> <span class="idlParamName">numberOfOutputChannels</span> = <span class="idlDefaultValue">2 </span></span>);</span></span></em></code></pre>
<h2 id="Examples" name="Examples">例</h2>
<p><code>createScriptProcessor()</code>の利用例は以下の通りになります。Web Audio API が提供する機能では望む音声処理を実現できない場合に、このメソッドを利用します。これを利用することで、どの様な音声処理でも記述できます。</p>
<pre class="brush: js;highlight[5]">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();
}</pre>
<h2 id="Parameters" name="Parameters">引数</h2>
<dl>
<dt>
<code>bufferSize</code></dt>
<dd>
サンプルフレームを単位としたバッファのサイズです。指定する場合は、次のいずれかの値でなくてはなりません: 256, 512, 1024, 2048, 4096, 8192, 16384 。指定されない場合、もしくは 0 が指定された場合、環境における最適な値が設定されます。この値はノードが生存する限り同じ値が利用され、その値は 2 の冪上です。</dd>
<dd>
この値は <code>audioprocess</code> イベントの発生頻度と、イベントごとに渡されるサンプルフレームの大きさを決めます。小さい値を指定すると低遅延となり、大きな値を指定すると音声の破損やグリッチを避けられます。この値は自分で決めず、実装に決めさせることが遅延と品質の面から推奨されます。</dd>
<dt>
<code>numberOfInputChannels</code></dt>
<dd>
入力のチャンネル数を整数で指定します。デフォルト値は 2 で、最大 32 チャンネルまでサポートします。</dd>
<dt>
<code>numberOfOutputChannels</code></dt>
<dd>
出力するチャンネル数を整数で指定します。デフォルト値は 2 で、最大 32 チャンネルまでサポートします。</dd>
</dl>
<div class="warning">
<p><strong>Important</strong>: Webkit currently (version 31) requires that a valid <code>bufferSize</code> be passed when calling this method.</p>
</div>
<div class="note">
<p><strong>注意</strong>: <code>numberOfInputChannels</code> と <code>numberOfOutputChannels</code> の両方に 0 を指定することはできません。</p>
</div>
<h2 id="Description" name="Description">返り値</h2>
<p>A {{domxref("ScriptProcessorNode")}}.</p>
<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
<p>{{page("/en-US/docs/Web/API/AudioContext","Browser_compatibility")}}</p>
<h2 id="仕様">仕様</h2>
<p>{{page("/en-US/docs/Web/API/AudioContext","Specifications")}}</p>
<h2 id="関連情報">関連情報</h2>
<p>{{page("/en-US/docs/Web/API/AudioContext","See_also")}}</p>
|