2009-11-13 34 views
0

我是DSP编程的新手,我想知道如何最好地执行看似基本的级调整操作。假设我有一个8位的数字,代表我想要一个信号的幅度为256级。我有一组代表信号数据的16位数字。基于“音量”参数缩放信号数据的最佳方法是什么,以便0表示完全衰减,255表示数据保持不变?基本的DSP级调整

回答

2

如何

out_sample = in_sample * volume/255; 

直线性缩放。这假定计算可以用更高的精度完成,以捕获乘法结果而不截断。

6

什么开卷说:

out_sample = in_sample * volume/255; 

如果你是一个真正的DSP芯片或硬件,而不快分频器上工作,就可以使用这种伎俩来得到相同的值,而不师:

int product = in_sample * volume; 
out_sample = (product + (product>>8) + 1)>>8; 

在现代DSP喜欢的C64x +这段代码运行速度快10倍左右......

另外:

您正在讨论音量,并且您当前将8位音量用作线性增益因子。然而,我们的耳朵将音量解释为对数效应。在乘法之前,您可能想要从db(您的8位)转换为线性增益。将它们预先计算并放入一张桌子。当你这样做时,你也可以将值的比例提高到2^15以获得更高的精度。

这会给你一个更好的回应,更少的点击你做音量淡化。