使用Tone.js按特定间隔播放音频文件时循环异常的问题求助
Tone.js按特定间隔播放音频文件时循环异常的问题求助
我现在在用Tone.js的Player组件,想让一个音频文件按特定间隔重复播放——也就是在开始时、第一小节、第四小节这几个时间点触发播放。但实际运行时遇到了问题:前几次播放的间隔是对的,但进入循环后,每一小节的开头都会播放这个音频,完全偏离了我设定的时间点。
我的HTML里只有一个用来触发播放的按钮:
<button id="playIt">Play</button>
对应的JavaScript/jQuery代码如下:
$(document).ready(function () { $("#playIt").click(function () { if (Tone.context.state != "running") { Tone.start(); } playNotes(); }); }); const player = new Tone.Player({ url: "/tick.mp3", loop: true, autostart: false }).toDestination(); Tone.Transport.bpm.value = 140; // Schedule the player to start at specific times Tone.Transport.schedule(time => { player.start(time); }, "0:0:0"); // Play at the start Tone.Transport.schedule(time => { player.start(time); }, "0:1:0"); // Play at 1st measure Tone.Transport.schedule(time => { player.start(time); }, "0:4:0"); // Play at 4th measure async function playNotes() { Tone.Transport.start(); }
目前的现象是:如果关闭Player的loop属性,它会按照设定的时间点正确播放一次;但开启loop后,第一次循环播放是正常的,之后就会在每一小节都播放这个音频,完全不符合预期。
麻烦各位帮我排查一下问题所在,非常感谢!
备注:内容来源于stack exchange,提问作者Steve A
相关产品推荐
相关产品推荐

