每当我尝试以“反馈延迟”运行代码时,Chrome浏览器就会崩溃,并显示蓝屏提示:
“噢,快点!
显示此网页时出了点问题。要继续,请重新加载或转到另一页。”

我的代码使用这种结构:

//Create any kind of input (only to test if it works or not);
var oscillator = context.createOscillator();

//Create the delay node and the gain node used on the feedback
var delayNode = context.createDelay();
var feedback = context.createGain();

//Setting the feedback gain
feedback.gain.value = 0.5;

//Make the connections
oscillator.connect(context.destination);
oscillator.connect(delayNode);
delayNode.connect(feedback);
feedback.connect(delayNode);
delayNode.connect(context.destination);//This is where it crashes

最佳答案

您是否将panner节点放置在delay节点之后?

我有一个类似的问题。
就我而言,这就像是panner节点的错误。

经过几个小时的调试,我找到了以下页面:
http://lists.w3.org/Archives/Public/public-audio-dev/2013Oct/0000.html

它说延迟后连接Panner节点会导致问题。
如果您的代码实际上是这样,它将崩溃。

var pannerNode = context.createPanner();
delayNode.connect(pannerNode);
pannerNode.connect(context.destination);

我的程序就是这样的代码。
当我从程序中删除panner节点时,它工作正常。

因此,如果您在同一场合,则可以通过自己编写panner来避免此问题。
这是我为程序编写的示例(在CoffeeScript中)。
class @Panner
constructor: (@ctx) ->
    @in = @ctx.createChannelSplitter(2)
    @out = @ctx.createChannelMerger(2)
    @l = @ctx.createGain()
    @r = @ctx.createGain()
    @in.connect(@l, 0)
    @in.connect(@r, 1)
    @l.connect(@out, 0, 0)
    @r.connect(@out, 0, 1)
    @setPosition(0.5)

connect: (dst) -> @out.connect(dst)

setPosition: (@pos) ->
    @l.gain.value = @pos
    @r.gain.value = 1.0 - @pos

我希望这能帮到您。

关于javascript - Web Audio API延迟并导致Chrome浏览器反馈崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18754840/

10-10 00:49