我正在构建一个网络应用程序,允许用户发展网络音频合成器(https://gensynth.ou.edu/#/evolve)。但是,在 chrome 上,每当您在进化过程中单击刷新几次并mutation amount
一直向上播放并玩耍时,应用程序都会意外崩溃(该选项卡仅显示“aw snap”崩溃屏幕)。
当合成器加载时,它通过连接到静音增益节点的 scriptProcessor 和分析器节点进行播放,因此它可以渲染出初始频谱图(最初尝试为此使用离线上下文,但这只是非常糟糕)。然后,当用户点击演奏乐器时,它会通过一组不同的脚本/分析器节点进行演奏。每次后续播放,振荡器和过滤器都会重新生成并连接到同一组脚本/分析器节点。
似乎每当较旧的脚本节点尝试收集垃圾时它就会崩溃,因为当我尝试保持对节点的引用并且没有将其onaudioprocess
函数设置为 null 时它发生的频率较低(这确实会严重影响内存)。有没有更好或更标准的方法来做到这一点?
我并不完全是在这篇文章中放入什么代码,因为这个问题只有在大部分时间都放在一起时才会出现。使用脚本/分析器节点的主要小部件在这里。
在 Firefox 中运行良好,如果有任何其他信息对我提供帮助,请告诉我。
编辑:仅隔离此页面new x30
上的可视化程序代码,您可以通过单击几次按钮来获得崩溃(尽管频率较低) 。