1.AudioBufferSourceNode
是一个AudioScheduledSourceNode
表示内存中连续的音频数据,存储在AudioBuffer
中.
2.没有输入只有一个输出,和使用AudioBuffer
的channels
3.只能被播放一次,在使用start()
后需要创建新的node
.创建node
并不耗时,而且AudioBuffer
可以被重复使用.使用fire and forget
思维模式使用,既一个node
使用后会自动销毁
4.AudioBufferSourceNode
如果没有到大buffer
的结尾,可以使用stop()
构造器
AudioBufferSourceNode()
属性
继承AudioNode
属性 | 描述 |
---|---|
AudioBufferSourceNode.buffer | 返回AudioBuffer |
AudioBufferSourceNode.detune | |
AudioBufferSourceNode.loop | |
AudioBufferSourceNode.loopStart | |
AudioBufferSourceNode.loopEnd | |
AudioBufferSourceNode.playbackRate |
方法
继承AudioScheduledSourceNode
方法 | 描述 |
---|---|
AudioBufferSourceNode.start() | 播放buffer 中的音频数据 |
例子
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// 3秒2通道的audiob=Buffer
var myArrayBuffer = audioCtx.createBuffer(2, audioCtx.sampleRate * 3, audioCtx.sampleRate);
// 添加白噪声,random values between -1.0 and 1.0
for (var channel = 0; channel < myArrayBuffer.numberOfChannels; channel++) { //遍历每个通道
var nowBuffering = myArrayBuffer.getChannelData(channel);
for (var i = 0; i < myArrayBuffer.length; i++) {
nowBuffering[i] = Math.random() * 2 - 1;
}
}
// AudioBufferSourceNode.
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();
参考:
https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode