Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有键盘输入的ToneJS的性能滞后_Javascript_Web Audio Api - Fatal编程技术网

Javascript 带有键盘输入的ToneJS的性能滞后

Javascript 带有键盘输入的ToneJS的性能滞后,javascript,web-audio-api,Javascript,Web Audio Api,以下代码(https://codepen.io/anon/pen/JvoVxb )然而,我发现他们的投球“慢”或“粘”;如果你试着和其他音乐一起演奏,你会听到它们有点滞后,很难找到正确的节奏 我没有发现直接使用WebAudio API时会出现这种情况(我发现QWERTY键盘的性能几乎和数字钢琴一样好。)我想知道这是否是ToneJS的一个棘手问题(为什么会发生?)。。。或者如果我在尝试用它创建此功能时“做错了什么” var keyToPitch = { " ":" ", "z":"C3",

以下代码(https://codepen.io/anon/pen/JvoVxb )然而,我发现他们的投球“慢”或“粘”;如果你试着和其他音乐一起演奏,你会听到它们有点滞后,很难找到正确的节奏

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

    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()
    }
根据此处的问答:,可以通过传入
currentTime
(与依赖Tone的默认
lookahead
)来修复代码

根据此处的问答:,可以通过传入
currentTime
(与依赖Tone的默认
lookahead
)来修复代码


你退房了吗?此外,您可能希望更新标题,以便更具体地提到“滞后”问题。还有一个建议,我在librepo页面中注意到,它可能包含一些有用的调整。是的!非常感谢。我看到了第一个,但没有看到第二个。“issues/306”是解决方案,如果你想获得这个问题的答案……听起来你实际上回答了自己的问题!我很想看看你是怎么安排的你退房了吗?此外,您可能希望更新标题,以便更具体地提到“滞后”问题。还有一个建议,我在librepo页面中注意到,它可能包含一些有用的调整。是的!非常感谢。我看到了第一个,但没有看到第二个。“issues/306”是解决方案,如果你想获得这个问题的答案……听起来你实际上回答了自己的问题!我很想知道你是如何布局的,即使使用tone.context.currentTime,与tone.js r10相比,我仍然有一点延迟。即使使用tone.context.currentTime,与tone.js r10相比,我仍然有一点延迟。
function onkeydown(e){
    synth.triggerAttack(keyToPitch[e.key], Tone.context.currentTime)      
}