blob: 4e81aaa47624f21b041f4370d2a3cfbc3acbfb63 (
plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
---
title: AudioBuffer.getChannelData()
slug: Web/API/AudioBuffer/getChannelData
translation_of: Web/API/AudioBuffer/getChannelData
---
<p>{{ APIRef("Web Audio API") }}</p>
<div>
<p>{{ domxref("AudioBuffer") }}インターフェースの<code>getChannelData()メソッドは、引数channel(0が最初のチャンネル)に結び付けられたPCMデータを</code>{{domxref("Float32Array")}}で返します。</p>
</div>
<h2 id="構文">構文</h2>
<pre class="brush: js;highlight[22]">var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);
var nowBuffering = myArrayBuffer.getChannelData(channel);</pre>
<h3 id="戻り値">戻り値</h3>
<p>{{domxref("Float32Array")}}</p>
<h2 id="例">例</h2>
<p>次の例は、2秒間のバッファを生成し、ホワイトノイズを書き込み、{{ domxref("AudioBufferSourceNode") }}で再生します。コメントは何をしているかを簡単に説明しています。<a href="http://mdn.github.io/audio-buffer/">コードをすぐに実行する</a>ことや、<a href="https://github.com/mdn/audio-buffer">ソースコードを閲覧する</a>こともできます。</p>
<pre class="brush: js;highlight[21]">var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var button = document.querySelector('button');
var pre = document.querySelector('pre');
var myScript = document.querySelector('script');
pre.innerHTML = myScript.innerHTML;
// ステレオ
var channels = 2;
// AudioContextのサンプルレートで2秒間の空のステレオバッファを生成する
var frameCount = audioCtx.sampleRate * 2.0;
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);
button.onclick = function() {
// バッファにホワイトノイズを書き込む;
// 単なる-1.0から1.0の間の乱数の値である
for (var channel = 0; channel < channels; channel++) {
// 実際のデータの配列を得る
var nowBuffering = myArrayBuffer.getChannelData(channel);
for (var i = 0; i < frameCount; i++) {
// Math.random()は[0; 1.0]である
// 音声は[-1.0; 1.0]である必要がある
nowBuffering[i] = Math.random() * 2 - 1;
}
}
// AudioBufferSourceNodeを得る
// これはAudioBufferを再生するときに使うAudioNodeである
var source = audioCtx.createBufferSource();
// AudioBufferSourceNodeにバッファを設定する
source.buffer = myArrayBuffer;
// AudioBufferSourceNodeを出力先に接続すると音声が聞こえるようになる
source.connect(audioCtx.destination);
// 音源の再生を始める
source.start();
}</pre>
<h2 id="引数">引数</h2>
<dl>
<dt>channel</dt>
<dd>channelプロパティはデータを得るチャンネルの番号である。0が最初のチャンネルを表す。<code>channel</code>が{{domxref("AudioBuffer.numberOfChannels")}}以上ならば、<code>INDEX_SIZE_ERR例外が発生する。</code></dd>
</dl>
<h2 id="使用">使用</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
<tr>
<td>{{SpecName('Web Audio API', '#widl-AudioBuffer-getChannelData-Float32Array-unsigned-long-channel', 'getChannelData')}}</td>
<td>{{Spec2('Web Audio API')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
<div>{{CompatibilityTable}}</div>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Chrome</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari (WebKit)</th>
</tr>
<tr>
<td>Basic support</td>
<td>14 {{property_prefix("webkit")}}</td>
<td>23</td>
<td>{{CompatNo}}</td>
<td>15 {{property_prefix("webkit")}}<br>
22 (unprefixed)</td>
<td>6 {{property_prefix("webkit")}}</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Android</th>
<th>Chrome</th>
<th>Firefox Mobile (Gecko)</th>
<th>Firefox OS</th>
<th>IE Phone</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
</tr>
<tr>
<td>Basic support</td>
<td>{{CompatNo}}</td>
<td>28 {{property_prefix("webkit")}}</td>
<td>25</td>
<td>1.2</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>6 {{property_prefix("webkit")}}</td>
</tr>
</tbody>
</table>
</div>
<h2 id="参考">参考</h2>
<ul>
<li><a href="/en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API">Using the Web Audio API</a></li>
</ul>
|