我创建了一个AudioBufferSourceNode:var source = audioCtx.createBufferSource();。接下来,我通过XHR从Soundcloud的轨道加载缓冲区。我可以使所有方法正常运行,并且可以调整大多数属性,例如loopbufferplaybackRate.value等。它在文档中说detune.value是另一个可以调整的属性。但是,当我尝试它时,期望它会改变音轨的音高,却什么也没发生。控制台告诉我,source.detune应该在未定义的时候是未定义的,如果我没记错的话,它是对象。我能够使谐调在振荡器上完美运行,但无法通过XHR加载缓冲区。那么,失谐属性是否仅限于某些类型的AudioBufferSourceNodes(或缓冲区)和振荡器,或者是否有另一种方法可以改变音轨的音高而无需调整playbackRate?

最佳答案

推测您使用的是Chrome稳定版。 Detune是相当新的东西,尚未稳定。它可以在Chrome Canary(和Firefox)中使用。

07-24 14:23