网络音频 Api:audioContext.createConstantSource() 未在 Safari 中实现;解决方法?
Web Audio Api: audioContext.createConstantSource() isn't implemented in Safari; workaround(s)?
我正在使用网络音频 api 来制作一系列简单的计算机音乐/电子音乐概念的演示。在一个示例中,我展示了如何通过连续添加谐波级数上升的正弦波并显示过程的示波器视图来构建 square wave
。
我包括一个输入范围滑块来随意调整基频,这需要使用一个常量源节点:所有振荡器的频率需要同时改变,否则,它们会失相,破坏演示的视觉效果。我在 chrome 中运行良好,但似乎
audioContext.createConstantSource()
Safari 不支持。对解决方法/替代实施有任何建议吗?
(Here is a link to a codepen of the demonstration, working in chrome).
Safari 还没有 ConstantSourceNode
的实现。如果你想让你的代码保持原样,你可以使用 standardized-audio-context,其中包括 ConstantSourceNode
的实现,适用于本机不支持它的浏览器。
但如果您愿意,也可以构建自己的。具有恒定信号的循环 AudioBufferSourceNode
和 GainNode
可用于实现相同的效果。与 AudioBufferSourceNode
一起使用的 AudioBuffer
需要至少两个样本,因为如果它只有一个样本,Safari 将不会循环它。
我正在使用网络音频 api 来制作一系列简单的计算机音乐/电子音乐概念的演示。在一个示例中,我展示了如何通过连续添加谐波级数上升的正弦波并显示过程的示波器视图来构建 square wave
。
我包括一个输入范围滑块来随意调整基频,这需要使用一个常量源节点:所有振荡器的频率需要同时改变,否则,它们会失相,破坏演示的视觉效果。我在 chrome 中运行良好,但似乎
audioContext.createConstantSource()
Safari 不支持。对解决方法/替代实施有任何建议吗?
(Here is a link to a codepen of the demonstration, working in chrome).
Safari 还没有 ConstantSourceNode
的实现。如果你想让你的代码保持原样,你可以使用 standardized-audio-context,其中包括 ConstantSourceNode
的实现,适用于本机不支持它的浏览器。
但如果您愿意,也可以构建自己的。具有恒定信号的循环 AudioBufferSourceNode
和 GainNode
可用于实现相同的效果。与 AudioBufferSourceNode
一起使用的 AudioBuffer
需要至少两个样本,因为如果它只有一个样本,Safari 将不会循环它。