使用Tone.js,我可以使用以下代码播放声音
var player = new Tone.Player("./sounds/snare_drum.wav").toMaster();
player.autostart = true;
但是,当我尝试对音频缓冲区执行相同的操作时,什么也没发生。
var player = new Tone.Player(buffers[i]).toMaster();
player.autostart = true;
console.log(buffers[i]);
console.log确认存在AudioBuffer
AudioBuffer { sampleRate: 44100, length: 83771, duration: 1.8995691609977323, numberOfChannels: 1 }
根据documentation,它应该可以使用url或AudioBuffer。我究竟做错了什么?谢谢。
根据文档
player.autostart = true;
一旦文件或缓冲区被加载,即开始播放。设置标志时,如果加载已经完成,则将其忽略,并且不会自动开始播放。由于AudioBuffer几乎已经确定已经加载到内存中,因此这可能是无法开始播放的原因。
您可以添加测试以检查音频流的状态:如果尚未加载,则将autostart
设置为true并延迟启动(以避免启动尚未加载的流)。如果音频流已经加载,则可以安全地手动启动它。
if (!player.loaded)
player.autostart = true;
else
player.start();
我已经对WAV文件和AudioBuffer盒进行了快速测试,它似乎可以正常工作。不确定这是否是最好的解决方案。
希望这有帮助=)