gpt4 book ai didi

javascript - 使用键盘输入时 ToneJS 的性能滞后

转载 作者:行者123 更新时间:2023-12-03 02:02:58 31 4
gpt4 key购买 nike

以下代码(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()
}

最佳答案

根据此处的问答:https://github.com/Tonejs/Tone.js/issues/306 ,可以通过传入 currentTime 来修复代码(而不是依赖于 Tone 的默认lookahead。)

function onkeydown(e){
synth.triggerAttack(keyToPitch[e.key], Tone.context.currentTime)
}

关于javascript - 使用键盘输入时 ToneJS 的性能滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49930872/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com