Javascript 如何使用带tone.Player的音频缓冲区播放音调?

Javascript 如何使用带tone.Player的音频缓冲区播放音调?,javascript,audio,tone.js,Javascript,Audio,Tone.js,使用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]);

使用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 { sampleRate: 44100, length: 83771, duration: 1.8995691609977323, numberOfChannels: 1 }
根据标准,它应该能够获取url或音频缓冲区。
我做错了什么?谢谢。

根据文档

player.autostart=true;
加载文件或缓冲区后立即开始播放。如果在设置标志时加载已完成,则可能会忽略该标志,并且不会自动开始播放。由于音频缓冲区几乎肯定已经加载到内存中,这可能是播放无法启动的原因

您可以添加一个测试来检查音频流的状态:如果尚未加载,则将
autostart
设置为true并延迟启动(以避免启动尚未加载的流)。如果音频流已经加载,那么您可以安全地手动启动它

如果(!player.loaded)
player.autostart=true;
其他的
player.start();
我已经用WAV文件和音频缓冲盒做了一个快速测试,看起来效果不错。但不确定这是否是最好的解决方案


希望这有助于=)

根据文档

player.autostart=true;
加载文件或缓冲区后立即开始播放。如果在设置标志时加载已完成,则可能会忽略该标志,并且不会自动开始播放。由于音频缓冲区几乎肯定已经加载到内存中,这可能是播放无法启动的原因

您可以添加一个测试来检查音频流的状态:如果尚未加载,则将
autostart
设置为true并延迟启动(以避免启动尚未加载的流)。如果音频流已经加载,那么您可以安全地手动启动它

如果(!player.loaded)
player.autostart=true;
其他的
player.start();
我已经用WAV文件和音频缓冲盒做了一个快速测试,看起来效果不错。但不确定这是否是最好的解决方案

希望这有帮助()