首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >网络音频定时性能

网络音频定时性能
EN

Stack Overflow用户
提问于 2021-11-02 01:50:17
回答 1查看 78关注 0票数 1

下面的文件使用ToneJS来播放一个稳定的第八个音符。根据计时日志,第八个音符之间的距离正好是0.25秒。

然而,它们听起来并不均匀。音符之间的时间间隔明显不规则。

为什么会这样呢?有什么可以做的吗?或者这是Javascript/web音频-api的性能限制吗?我在Chrome、Firefox和Safari中测试过,结果都是一样的。

感谢您对此提供的任何信息或建议!

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
<title>Tone Timing Tester</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.32/Tone.min.js"></script>
</head>

<body>
<button onclick="start()">Start</button>
<button onclick="stop()">Stop</button>
<form>
    <input id="bpm" type="number" value="120">
    <button type="button" onclick="submitBPM()">Enter BPM</button>
</form>

<script type="text/javascript">
    
    var synth = new Tone.Synth().toDestination()

    Tone.Transport.scheduleRepeat(function(time){
        console.log('time', time);
        synth.triggerAttackRelease('C4', '8n')
    }, "8n");

    async function start() {
        await Tone.start()
        Tone.Transport.start();
    }

    function stop() {
        Tone.Transport.stop();
    }

    function submitBPM() {
        var bpm = document.getElementById('bpm').value;
        Tone.Transport.bpm.value = bpm;
    }

</script>
</body>
</html>
EN

Stack Overflow用户

回答已采纳

发布于 2021-11-02 12:49:26

对于计划好的triggerAttackRelease,应该将time值作为第三个参数传递。

代码语言:javascript
运行
复制
Tone.Transport.scheduleRepeat(function(time){
    console.log('time', time);
    synth.triggerAttackRelease('C4', '8n', time);
}, "8n");

下面是一个包含工作代码的码页

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69804550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档