Bit*_*rex 0 signals signal-processing
我是DSP编程的新手,我想知道如何最好地执行水平调整的看似基本的操作.假设我有一个8位数字代表我希望信号以256步进入的幅度.我有一组代表信号数据的16位数字.基于"音量"参数缩放信号数据的最佳方法是什么,以便说0是完全衰减,255使数据保持不变?
什么放松说:
out_sample = in_sample * volume / 255;
Run Code Online (Sandbox Code Playgroud)
如果您正在使用真正的DSP芯片或没有快速分频器的硬件,您可以使用此技巧获得相同的值而无需划分:
int product = in_sample * volume;
out_sample = (product + (product>>8) + 1)>>8;
Run Code Online (Sandbox Code Playgroud)
在像C64x +这样的现代DSP上,这段代码的运行速度提高了大约10倍......
也:
您正在谈论音量,并且您当前应用8位音量作为线性增益因子.然而,我们的耳朵将音量解释为对数效应.您可能希望在乘法之前从db(您的8位)转换为线性增益.预先计算它们并将它们放入桌子中.在执行此操作时,您还可以将值的比例提高到2 ^ 15以获得更高的精度.
这会给你一个更好的响应,更少的点击你做的音量衰落.
| 归档时间: |
|
| 查看次数: |
599 次 |
| 最近记录: |