--- title: AudioBuffer.getChannelData() slug: Web/API/AudioBuffer/getChannelData translation_of: Web/API/AudioBuffer/getChannelData ---
{{ APIRef("Web Audio API") }}
{{ domxref("AudioBuffer") }} 接口的getChannelData()方法返回一{{domxref("Float32Array")}} ,其中包含与通道关联的PCM数据,通道参数定义(0表示第一个通道)。
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate); var nowBuffering = myArrayBuffer.getChannelData(channel);
INDEX_SIZE_ERR )的错误。{{domxref("Float32Array")}}.
在下例中,我们创建一个2秒钟的缓冲区,用白噪声填充它,然后通过{{domxref("AudioBufferSourceNode") }}来播放它. 评论应该会清楚的解释发生的事情。 你也可以实时运行代码,或者查看源代码。
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;
// Stereo
var channels = 2;
// Create an empty two second stereo buffer at the
// sample rate of the AudioContext
var frameCount = audioCtx.sampleRate * 2.0;
var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);
button.onclick = function() {
// Fill the buffer with white noise;
//just random values between -1.0 and 1.0
for (var channel = 0; channel < channels; channel++) {
// This gives us the actual ArrayBuffer that contains the data
var nowBuffering = myArrayBuffer.getChannelData(channel);
for (var i = 0; i < frameCount; i++) {
// Math.random() is in [0; 1.0]
// audio needs to be in [-1.0; 1.0]
nowBuffering[i] = Math.random() * 2 - 1;
}
}
// Get an AudioBufferSourceNode.
// This is the AudioNode to use when we want to play an AudioBuffer
var source = audioCtx.createBufferSource();
// set the buffer in the AudioBufferSourceNode
source.buffer = myArrayBuffer;
// connect the AudioBufferSourceNode to the
// destination so we can hear the sound
source.connect(audioCtx.destination);
// start the source playing
source.start();
}
| Specification | Status | Comment |
|---|---|---|
| {{SpecName('Web Audio API', '#dom-audiobuffer-getchanneldata', 'getChannelData')}} | {{Spec2('Web Audio API')}} |
{{Compat("api.AudioBuffer.getChannelData")}}