如何使用带 Tone.Player 的音频缓冲区播放音调?
How to play a tone using an audiobuffer with Tone.Player?
使用 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 案例进行了快速测试,它似乎可以工作。不过不确定这是否是最佳解决方案。
希望这对您有所帮助 =)
使用 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 案例进行了快速测试,它似乎可以工作。不过不确定这是否是最佳解决方案。
希望这对您有所帮助 =)