Web Audio API -- Chrome / Safari 中的频率调制听起来不同
Posted
技术标签:
【中文标题】Web Audio API -- Chrome / Safari 中的频率调制听起来不同【英文标题】:Web Audio API -- frequency modulation sounds different in Chrome / Safari 【发布时间】:2013-01-29 20:16:24 【问题描述】:我正在为 Web Audio API 合成器开发基于浏览器的修补接口。频率调制(将一个振荡器与另一个振荡器的频率挂钩)在 Chrome 中按预期工作。应该是科幻的声音,像300Hz的正弦波,频率在30Hz左右摆动。
在 Safari(和 Mobile Safari)中,它听起来像是低沉的隆隆声。听起来好像有 FM,但没有正确的基频。这只是一个浏览器怪癖,将在未来的版本中解决吗?现在有解决办法吗?
这是视觉/互动版本: http://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;
;
【问题讨论】:
【参考方案1】:Safari 6 的 webkit 具有较旧版本的网络音频。在每晚的构建中尝试它,它可能会更好 - 但是是的,这些都是暂时的问题。
【讨论】:
【参考方案2】:这是一个较老的问题,但我会回答,因为我以前遇到过这个问题。似乎在较旧的 Safari 版本中,GainNode 值被限制为 0..1。在 Chrome 和较新的 Safari 版本中,您可以分配任何值(例如,我运行 FM/xmod 时增益节点为 30000)。除了建议用户使用当前浏览器外,我还没有找到解决方案。好消息是,截至 2016 / Safari 9,该问题已得到修复。
【讨论】:
以上是关于Web Audio API -- Chrome / Safari 中的频率调制听起来不同的主要内容,如果未能解决你的问题,请参考以下文章
如何将一个或两个乐器连接到 Web Audio API 并拆分立体声信号?
是否有抽象 Web Audio API 和 Mozilla Audio Data API 以读取原始音频(MP3,ogg)的库