我正在尝试实现此处描述的立体声阶段:http://www.image-line.com/support/FLHelp/html/plugins/3x%20OSC.htm
“立体声相位(SP)-允许您为发生器的左右声道设置不同的相位偏移。偏移导致振荡器从振荡器形状的不同点开始(例如,从振荡器的最大值开始)。正弦函数而不是零点。立体声相位偏移增加了所产生声音的丰富度和立体声全景。”
我正在尝试为OscillatorNode实现这一点。我唯一的想法是使用createPeriodicWave(https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#dfn-createPeriodicWave),但是,根据规范,对create周期波的描述超出了我的理解,我还没有通过Google找到任何示例。
解密createPeriodicWave的描述方面的任何帮助都将与其他有关如何实现此效果的想法一样有帮助。
谢谢!
最佳答案
伪造它的一种简单方法是在左右声道上添加单独的延迟节点,并为它们提供用户控制的延迟值。这将是我的方法,并且几乎与阶段设置具有相同的效果。
如果您想使用createPeriodicWave
,不幸的是,您可能必须了解它背后的一些难题。
基本上,您首先必须将波形表示为正弦波“部分”的总和。所有周期波都具有这种形式的某种表示。然后,一旦找到每个部分的相对幅度,就必须通过将它们分别乘以一个复数来分别对左右声道进行相移。您可以在此处阅读有关将周期波表示为正弦波之和的更多详细信息:http://music.columbia.edu/cmc/musicandcomputers/chapter3/03_03.php
与使用createPeriodicWave
相比,使用BufferSourceNode
具有显着的优势:createPeriodicWave
波形将自动避免aliasing。如果要在缓冲区中“手动”生成波形,要避免混叠是相当困难的。