我一直在玩动态音频库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是否有某种方式自动处理这种情况,或者是否有一些强大的方式可以动态地覆盖任意数量的声音而不会导致剪辑?谢谢!
答案 0 :(得分:1)
由于这里似乎没有任何活动,我会注意到,很明显,SW2只是以远小于满量程的方式返回正弦源,但事实证明,如果你结合足够的源,你就会得到削波。 SW3以满刻度返回源,因此剪切变得明显,来源较少。