每当我尝试以“反馈延迟”运行代码时,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/