首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有键盘条目的ToneJS的性能滞后

带有键盘条目的ToneJS的性能滞后
EN

Stack Overflow用户
提问于 2018-04-19 22:00:43
回答 1查看 518关注 0票数 0

跟随代码( https://codepen.io/anon/pen/JvoVxb )播放音高,然而,我发现它们是“慢的”或“粘稠的”;如果你试着和其他音乐一起演奏,你会听到它们有点滞后,很难使节奏正确。

在直接使用WebAudio API时,我还没有发现这种情况(在这里,我发现QWERTY-键盘性能几乎与数字钢琴一样好)。我想知道这是否是ToneJS的一个棘手的问题(为什么会发生?)或者,如果我在尝试用它创建这个功能时“做错了什么”。

代码语言:javascript
复制
    var keyToPitch = { " ":" ", "z":"C3", "s":"C#3", "x":"D3", "d":"D#3", "c":"E3", "v":"F3", "g":"F#3", "b":"G3", "h":"G#3", "n":"A3", "j":"A#3", "m":"B3", ",":"C4", "q":"C4", "2":"C#4", "w":"D4", "3":"D#4", "e":"E4", "r":"F4", "5":"F#4", "t":"G4", "6":"G#4", "y":"A4", "7":"A#4", "u":"B4", "i":"C5", "9":"C#5", "o":"D5", "0":"D#5", "p":"E5", "[":"F5", "=":"F#5", "]":"G5", "Backspace":"G#5", "\\":"A5" }

    var synth = new Tone.Synth()
    synth.oscillator.type = "sawtooth"
    synth.toMaster()

    window.addEventListener('keydown', this.onkeydown) 
    window.addEventListener('keyup', this.onkeyup) 

    // This is "slow", relative to WebAudio, it's not playing the pitch in a timely fashion...  
    function onkeydown(e){
        console.log(e.key)
        synth.triggerAttack(keyToPitch[e.key])      
    }
    function onkeyup(e){
        console.log(e.key)
        synth.triggerRelease()
    }
EN

回答 1

Stack Overflow用户

发布于 2018-04-20 21:08:08

根据这里的Q&A:https://github.com/Tonejs/Tone.js/issues/306,代码可以通过传入currentTime来修复(而不是依赖音调的默认lookahead)。

代码语言:javascript
复制
function onkeydown(e){
    synth.triggerAttack(keyToPitch[e.key], Tone.context.currentTime)      
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49930872

复制
相关文章

相似问题

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