我有一个关于混合多个PCM样本的简单问题。
我读到混合多个音频PCM样本的最佳方法是每帧取样本的平均值。
因此,如果我在加上一起说5个16位样本再除以5之前,显然它很可能会有一个大于16位短的值。
因此,当将多个16位样本混合在一起时,我是先将它们全部存储在int中并添加它们并将它们平均,然后转换回短路?
答案 0 :(得分:5)
如果您想混合音频样本,只需将它们添加到一起即可。建立平均值不是正确的方法。
想一想:如果有人拉小提琴而第二把小提琴加入音乐,那么第一把小提琴会变得不那么响亮吗?不,不会。第二把小提琴只是增加了信号。
添加PCM样本时,必须处理整数溢出。一种方法是使全局“主体积”应用于混合PCM样本。使用这样的全局乘法器可以帮助您确保最终信号大部分在输出数据的16位内。
您可能还需要每通道音量控制。
最后,溢出仍然会出现在那里,处理它们的最佳方法是将输出值钳位到16位输出流的最大和最小可表示值。耳朵会忍受这种情况,只要它不经常发生就会被忽视。
答案 1 :(得分:1)
如果你谈论混音,我会建议你使用花车。 无论如何,如果你想使用短路,你可以使用32位或64位整数,或者你先简单地划分样本然后再添加它们。这可能是因为这个
等于此