Web Audio API - Chrome / Safari中的频率调制听起来不同

时间:2013-01-29 20:16:24

标签: javascript web-audio

我正在为基于浏览器的Web音频API合成器修补界面工作。频率调制(将振荡器挂接到另一个振荡器的频率)在Chrome中按预期工作。它应该是科幻声音,如300Hz正弦波,频率波动30Hz。

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

以下是视觉/互动版本:
html5 fm synth
http://forresto.github.com/dataflow-webaudio/

小提琴版,用最少的代码来证明效果:
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;
};

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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