Originally posted by yubo at 2005-9-25 21:11
我也有个问题。假设我整个制作过程中,采样率和Bt数一直没有变化。而在制作的过程中需要使用象L2这样带有dither功能的效果器那么用不用把他的dither选项关闭那?(他的内部处理精度是42bt,如果我的文件一直是24b ...
为什么软件会有内部32bit浮点运算?有人说反正最后的输出bit是16,
干脆就设内部精度16bit,完蛋了!举个例子。我们做三次音量的放大和缩小:
假如内部精度低到不认识小数点(真实情况,由于是二进制的,还有牵扯到db,log+-的问题,复杂的多,这里简化了):
比如把9单位音量减小两倍音量:得到4.5,由于精度是整数,变成了4,我再减小1、5倍音量,得到了2.66666666666666666……,取整得到2单位音量。这时候你说,我想再还原回9,是不是再扩大2*1。5=3倍就行了?可是你看看2单位的音量*3得几?还得九吗?
(写完才想起kinghand已经写过了……就当我这是比他浅几级的吧,
看不懂他的就来看我的吧哈哈)
这就是内部精度越高越好的道理。高bit往低bit转换的时候,比如从(举个整数好算)10000转到1000,
那么只要除以10就行了。比如我的信号是9999,除10就成了999.9。
这看起来很简单,可是问题是,16/24bit是没有小数点的!那那个0.9怎么办?
4舍5入??别傻了,这不可能的。真给你一个四舍五入的,或者忽略小数点的
算法,算出声音根本没有办法听! 这就要引入'抖动"。即是说,
根据前后好多个采样点的数据,一些时候,让999.9变成999。0,一些时候让
999、9变成1000。这就叫抖动。这也是抖动为什么会有不同算法的原因。
什么时候变1000?什么时候变999?这是根据很多机密算法得到的呵呵我也不知道。
这也是为什么16bit转8bit永远会多出噪音来。因为bit实在太底了,怎么抖也不能消除那个
丢失的0。9了。
至于软件内部,我想它已经内置了抖动,或者其他什么算法保证内部到输出是最佳化。