问题:
如下所示(差)如下所示创建音频图表会导致振荡器无法输出。我不确定振荡器是产生超低频,还是什么,但没有创建可听输出。
GainNode
- > WaveShaper [-1, 1]
- > GainNode
- > OscillatorNode.frequency
但是,将上图中的最后一个GainNode连接到另一个GainNode的gain
参数不导致同样的问题(假设此图中的最终GainNode有振荡器或某种类型发电机连接到它)。
编辑:事实并非如此。它确实有影响力。请参阅下面的更新。
GainNode
- > WaveShaper [-1, 1]
- > GainNode
- > GainNode.gain
示例:
我创建了两个JSFiddle来显示这个。
frequency
param, and, when enabling the WaveShaperNode's curve
property, the output is silenced. gain
param, and enabling/disabling the WaveShaperNode does not have an impact. 编辑:事实并非如此。它确实有影响力。请参阅下面的更新。 我认为我要么从根本上误解了这里的信号流,要么在较低的层面上出现问题。救命啊!
一些背景知识:
我正在尝试在WebAudio API中创建一个模拟AudioParam对象行为的音频图形。原因是我希望能够使用自定义曲线的AudioParam,因此我可以使用内置节点(而不是密集的ScriptProcessingNode)来控制AudioParam。即有一个指数曲线的AudioParam,或一个等功率的AudioParam。
在上面的音频图中,第一个GainNode
是“控制”节点,因此更改它的gain.value
属性将控制AudioParam仿真。
更新(13/04)
我在图表中添加了一个AnalyserNode来显示输出,我想我发现了问题......
WaveShaperNode(使用值为[-1,1]的线性曲线)将输入值钳制到-1到1的范围,无论进入它的值如何。因此,当启用WaveShaperNode时,来自paramInput
GainNode的输入被限制为-1,1。我需要查看规范以查看这是否是正确的行为,但我认为它可能是; WaveShaperNode的一个主要用途是用于失真,所以如果它没有将输入信号钳位到-1,1那么就不会产生失真,只是整形。需要检查一下。
And here's an updated JSFiddle showing the same behaviour when controlling a GainNode's gain param