使用常规 WebAudio,我可以将 bufferSource 连接到目的地,如下所示:
const audioCtx = new AudioContext()
const bufferSource = audioCtx.createBufferSource()
bufferSource.connect(audioCtx.destination)
我以为我可以用 Tone.js 做同样的事情,但是这个:
const audioCtxTone = Tone.context
const bufferSource = audioCtxTone.createBufferSource()
bufferSource.connect(audioCtxTone.destination)
给出错误“Destination”类型的参数不可分配给“AudioNode”类型的参数。
我在这里做/想错了什么?
我无法准确解释为什么你的代码不起作用。 Tone.js 使用标准化音频上下文,它提供了 Web 音频 API 的包装器,使其在不同浏览器之间更加兼容。 Tone.js 在标准化音频上下文之上有自己的非常薄的包装器。我认为一路上出了什么问题。
但是如果您使用
context
的 AudioBufferSourceNode
属性来代替,它应该可以工作。它应该指向右侧AudioContext
。
const audioContext = Tone.context;
const audioBufferSourceNode = audioContext.createBufferSource();
audioBufferSourceNode.connect(audioBufferSourceNode.context.destination);