我一直在使用动态音频库standingwave 3。几乎注意到的第一件事是,如果尝试developer's guide中的代码样本,即以下代码:

// Create a chord of three simultaneous sine tones: A3, E4, A4.
var sequence:ListPerformance = new ListPerformance();
sequence.addSourceAt(0, new SineSource(new AudioDescriptor(), 0.1, 440));
sequence.addSourceAt(0, new SineSource(new AudioDescriptor(), 0.1, 660));
sequence.addSourceAt(0, new SineSource(new AudioDescriptor(), 0.2, 880));
// Play it back.
var source:IAudioSource = new AudioPerformer(sequence);
player.play(source);

然后就会听到一阵令人不快的声音和跟踪消息,显示为“AUDIO CLIPPING”。开发人员在github上的issue reports中解释说,将样本混合在一起时需要减少样本的增益,以避免这种情况,而且没有一种简单的方法可以动态地知道需要减少多少。

我的问题是,stangingwave2似乎是如何自动处理此问题的?例如,上面引用的代码未在SW2中剪辑。同样考虑这个SW2 example demo-如果您增加延音和保持(S / H滑块)并按顺序按钮之一,即使source没有显示任何明显的改变增益或噪声的迹象,多个音调也会重叠而不会削波。罪恶声调的音量,它们只是混合在一起。

这是怎么回事-SW2是否有某种自动解决此问题的方法,或者是否存在一些健壮的方法来动态叠加任意数量的声音而不引起削波?谢谢!

最佳答案

由于这里似乎没有任何 Activity ,因此我会注意到,显然,SW2返回的正弦信号源远小于满量程,但是事实证明,如果您组合了足够的信号源,则确实会产生削波。 SW3以最大比例返回源,因此使用较少的源就可以明显看到削波。

10-04 11:28