2009-11-13 37 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以獲得更高的精度。

這會給你一個更好的迴應,更少的點擊你做音量淡化。