4

我正在为 Web Audio API 合成器开发基于浏览器的修补接口。频率调制(将一个振荡器与另一个振荡器的频率挂钩)在 Chrome 中按预期工作。它应该是一种科幻的声音,就像一个 300Hz 的正弦波,频率在 30Hz 上下波动。

在 Safari(和 Mobile Safari)中,它听起来像是低沉的隆隆声。听起来好像有 FM,但没有正确的基频。这只是一个浏览器怪癖,将在未来的版本中解决吗?现在有解决办法吗?

这是视觉/交互式版本: http:
html5 调频合成器
//forresto.github.com/dataflow-webaudio/

还有fiddle版本,用最少的代码来演示效果:http:
//jsfiddle.net/FVaWL/28/

var mod, modGain, osc;

var out = context.destination;

var startTest = function(){
    mod = context.createOscillator();
    mod.frequency.value = 8;

    modGain = context.createGain();
    modGain.gain.value = 30;

    osc = context.createOscillator();
    osc.frequency.value = 300;

    mod.connect(modGain);
    modGain.connect(osc.frequency);
    osc.connect(out);

    osc.start(0);
    mod.start(0);
};

var stopTest = function(){
    osc.stop(0);
    mod.stop(0);
    mod = modGain = osc = null;
};
4

2 回答 2

1

Safari 6 的 webkit 具有较旧版本的网络音频。在每晚构建时尝试它,它可能会更好 - 但是是的,这些都是暂时的问题。

于 2013-01-29T22:44:51.673 回答
0

这是一个较老的问题,但我会回答,因为我以前遇到过这个问题。似乎在较旧的 Safari 版本中,GainNode 值被限制为 0..1。在 Chrome 和较新的 Safari 版本中,您可以分配任何值(例如,我运行 FM/xmod 时增益节点为 30000)。除了建议用户使用当前浏览器外,我还没有找到解决方案。好消息是,截至 2016 / Safari 9,该问题已得到修复。

于 2016-10-31T20:46:02.067 回答