我创建了一个 AudioBufferSourceNode:var source = audioCtx.createBufferSource();
。接下来,我通过 XHR 使用来自 Soundcloud 的轨道加载缓冲区。我可以让所有方法正常运行,并且可以调整大多数属性,例如 loop
、buffer
、playbackRate.value
等。文档表明 detune.value
是另一个可以调整的属性。然而,当我尝试它,期望它改变轨道的音高时,什么也没有发生。控制台告诉我, source.detune
应该是未定义的,如果我没有记错的话,则反对。我能够使失谐在振荡器上完美运行,但不能在通过 XHR 加载的缓冲区上运行。那么,失谐属性是否仅限于某些类型的 AudioBufferSourceNodes(或缓冲区)和振荡器,或者是否有另一种方法可以在不调整播放速率的情况下改变轨道的音高?
最佳答案
据猜测,您使用的是稳定版 Chrome。 Detune 是相当新的,还没有稳定下来。它适用于 Chrome Canary(和 Firefox)。
关于javascript - Web Audio API AudioBufferSourceNode 失谐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32014551/