发烧论坛

注册

 

发新话题 回复该主题

计算芯片的发展将让普通CD战胜LP [复制链接]

查看: 50916|回复: 320
11#

阿龙 在 2004-11-17 6:41:07 发表的内容
看了标题,《计算芯片的发展将让普通CD战胜LP》
“将”可否理解为目前阶段它还没有战胜呢?
就像共产主义也是将要战胜资本主义的道理一样?反正我从来没有怀疑过这一点。


呵呵我就说说我的看法吧,个人的意见,请多多指教:

首先,我觉得阿龙兄假如换一个环境的话,看法多少会变的。环境对于人的意识的改造力是惊人的——不说唱片,说说人。我在这边碰到一些入了美国籍的华人——他们是从国内移民去的,但是就那么十年或者不到十年的时间,他们可以开口说:“我们总统怎么怎么”——我听得很别扭,我想象不到十年前他们还是中国人,怎么就那么十年时间,就变成这样呢?

近来由于各种条件的允许,我可以用不错的LP系统聆听很多高素质的LP唱片,甚至可以没有后顾之忧地买各种唱片,还真的算是比较仔细地实践过的。所以说我觉得我所想的不是空对空的纯理论,它还是跟经过实践之后得出来的结果相吻合的。当然,我的标准是:第一,声音要真;第二,声音要美。“真的来美”和“美的来真”似乎等价,其实不然,各位不妨仔细咀嚼一下。

另外我觉得,一些LP爱好者说CD不好,但是他们是在并没有以像玩LP的热情、那样的精力、那样的资金投入去了解过CD之后,才客观地作出结论,然后才选择LP的,很多情况都是首先以不是很高档(相对于他们的LP系统来说)的器材听过一些CD(我不相信目前在座有人把EMI的CDC 47XXX和49XXX这些品种,还有Decca 414XXX 417XXX,还有DG413XXX这些CD都拥有——甚至连大不列颠图书馆都收藏不到一半——实际上假如你全身心投入到找CD之中去之后,在有充足的资金的情况下,你会发现找绝版CD比找绝版LP的难度大多了,所以这也是为什么我知道不少人对真正极品的CD是无缘聆听过的),然后听见传闻说前一代的LP声音好,然后一听,和CD不同,然后就把CD扔在一边听LP去了——当然我承认这点:在已出版的LP和CD中,混音不好的比率,CD的确比LP大。所以大家更有可能买到制作不好的CD,这也容易造成对CD的误解。

另外,这边为图书馆调校LP的工程师私底下告诉我,大家现在觉得音效最佳的Decca SXL 2XXX那一批最早的立体声唱片:当初Decca用的是Ampex为它制造的刻片机,谁知那种刻片机因为是第一代产品,技术上存在问题,结果在刻制18kHz以上的信号的时候就会出现能量衰减的问题,使得58年之后的好几年内的英国产的Decca立体声LP,实际上在人耳可听的高频部分刻的信号分量很不足,或者干脆可以说就根本刻不上了多少去——这个问题一直持续到60年代中期Decca换了新型的刻片机为止。因此想到有人称赞Decca头版LP声音如何棒(客观没有的东西,都能听出来说有),我有如下几个个人的看法:

1. 人的听觉是多容易被骗啊;
2. 人的心理作用对于大脑的认知的支配性是何等的强大啊;
3. 正如Dr. Pan所讨论的,真实和好听的关系。

OK,还有更加打击的消息:几乎所有的LP在混音的时候都作过动态压缩的,突出中高频、消减低频。这点不是说我听“似乎没有”呀,就没有的。人家负责刻LP的人都说干过这事情了(EMI那本百年历史的大部头里面也写了,另外RCA的人也这样说的;假以时日,我甚至可以把Decca,Philips等等的都找出来),逃不了的。假如让我把证人都找出来,让他们当庭作证——我可没这么大能耐。所以,尽管我很相信其真实性,但大家也可以选择不相信我提供的这些信息。

另外,有不少CD,还真是没有经过动态压缩的(这也是我一直在努力收集的),EMI的大部分头版CD就是。因为全频丰满,所以听上去感觉和LP不同,甚至由于中高频没有刻意的突出,所以给人以“密度”不高的感觉。

最后,现在很多LP唱机,根本就不可能再现刻片的情形:其一,65年之前各厂都有各自的均衡曲线,但是现在的唱头放大器,一律都是RIAA的(再说,让你自己调,你也无法知道那时候那个厂的曲线)。

其二,刻片刀的针尖和母模的角度问题:各厂有不同的标准,有的是10度,有的是30度,很多德国的厂用的是15到20度左右的数据——我想没有人可能在播放的时候能够调准这个角度——因为你无法知道那个角度值。

还有第三,这时最要命的:LP播放到内圈的时候,线速度只剩下最外圈的一半都不到,音质按照发烧标准来讲真的是不行的,尤其是一般作品结尾部分都是动态庞大的,这些段落放在最内圈,唉。。。不过假如平常听的是独奏或者几重奏那种LP,那还可以忍受。我的耳朵的确能分辨出LP最外圈和最内圈的音质的不同——我不会是外星人吧?

还有第四,磨损问题。我买唱片不是拿来摆的,虽然我觉得我或许分辨不出5%的失真,但是我知道,播放100次之后再好的唱头都会把LP磨到有5%的失真,我心理上受不了。

再说一点,和我上面所说的那种“特殊噪音”对应一下。由于唱头播放LP的时候,是把唱针的振动转化为电磁能的。但是由于电磁感应的作用,唱头内的线圈对唱针也会产生一股相反的作用力。所以实际上任何唱头在播放的时候,唱针在颤,唱头自己也会在高频率地颤(调校得好,肉眼可以看不见;调校不好,连肉眼都能看得见这种颤)。这种颤动也是造成我上述所说的那种特殊的噪音的根源之一(由于物理定律规定了这种颤动是必然存在的,所以我上面就说过这种噪音无法消除)。试想一下,按照我的标准,我能容许这种本来不属于母带上的声音吗?

还有好多方面,这里就省略不说了。那这时候也有一种假设:会不会可能上述这些因素对于重播的影响,不大呢?我觉得影响肯定不会不大。

所以说,假如说LP的普遍特点是“好听”,这OK,没问题;但假如说CD不比LP真实,那么理论、工业标准都摆在这了,我也无须多花精力去辩护了。

还是觉得不可思议?我们学校化学系有位教授是诺贝尔化学奖获得者,但是他课堂最后都会说,“现在你们听完我讲科学了,接着得听我讲我的信仰”——他信基督教的,他相信人类和世界万物是上帝在一天之内造出来的——诺贝尔奖——不可思议吧。
最后编辑felixcat
TOP
12#

Getz 在 2004-11-16 13:53:45 发表的内容
假如有实际软件能做出这类算法,那就是真的造福大众了
(没人开发...)


呵呵这个不用担心,软件早就有了,Mathematica,Maple,MATLAB这几个软件都是成功的数学计算软件,尤其是MATLAB,特别适用于数值计算。这些著名的插值算法的源程序都不长,比如说对于也是很著名的,工业设计用来“磨滑”带有棱角的折线的“自然三次样条函数插值”法(呵呵名字挺长的,这个算法理解上有一定难度,很多研究生的课本都把这部分内容作为选学而已),它的MATLAB计算源程序如下:

%================
% cBspline.m
%================
function Sx = cBspline(x,x0,h,N)
for l=1N+9)
    %because the indices of t begins with 1, not 0, so write (l-1)*h
    t(l)=x0+(l-1)*h;
end
for m=1N+4)
B(m,1)=F(m,1,x,t,0,0);
end
for k=2:4
for m=1N+4-k)
    B(m,k)=F(m,k,x,t,B(m,k-1),B(m+1,k-1));
end
end
Sx=B(1,4);

______________________________________________

%=======
% F.m
%=======
function y=F(m,k,x,t,y1,y2)
if (k==1)
    if (x>=t(m)) & (x        y=1;
    end
    if (x=t(m+1))
    y=0;
    end
end
% use the recurrence to compute B(j,k), be careful of the indices!
if (k>1)
    y=((x-t(m))/(t(m+k-1)-t(m)))*y1+((t(m+k)-x)/(t(m+k)-t(m+1)))*y2;
end

其中第一个函数将调用第二个子函数。第一个函数里面的x,x0等都是待用户输入的数据点坐标。

假如在座有朋友想看看这个函数的威力,不妨采用下面的测试函数:

%=================
% Bspline.m
%=================


function T=Bspline(x,y,N)
a=cBspline(1,0,1,N);
b=cBspline(2,0,1,N);
A(1,1)=3;
A(1,2)=-6;
A(1,3)=3;
A(26,24)=3;
A(26,25)=-6;
A(26,26)=3;
for j=2:25
    A(j,j-1)=a;
    A(j,j)=b;
    A(j,j+1)=a;
end
c=A^(-1)*y;
T=0;
for j=1:26
    T=T+c(j)*cBsplinej(j,x,0,1,N);
end

________________________________________________________

%=================
% cBsplinej.m
%=================

function Sx = cBspline(j,x,x0,h,N)
for l=1N+9)
% please pay special attention to -3, because we begins with c_{-3,3} here,
% so t_{i} begins with i=-3, which means t={-3,-2,-1,0,1,2,3,...}
    t(l)=x0+(l-1)*h-3;
end
for m=1N+4)
B(m,1)=F(m,1,x,t,0,0);
end
for k=2:4
for m=1:(N+4-k)
    B(m,k)=F(m,k,x,t,B(m,k-1),B(m+1,k-1));
end
end
Sx=B(j,4);

以上是把数据点输进去计算,假如我们想要看视觉上的最终效果,还要执行这个绘图程序:

%=================
% draw.m
%=================

function draw(x,y)
for j=0:0.05:23
    s=Bspline(j,y,30);
    plot(j,s,'b-','MarkerSize',10);
    hold on;
end
for j=1:24
    plot(j-1,x(j),'b *', 'MarkerSize',10);
    hold on;
end

在MATLAB软件之下可以这样来运行:
1. 先把上述的几个源程序分别存成文本文档,并且以.m为后缀名,都放在同一目录下;然后再把MATLAB运行目录设定为前面的那个目录;
2. 在控制窗口内键入:
xj = [ .25  0 -1  1.5  1  1.5   4  4  6   5   3.5 2.5  3.5  5   5.5   3.5  3.5  1.25  1  2  .5  -1   -.25 .25]'; (回车)
y = [ 4    1  0  0    1  3.5  .5  0  0  .5   2.5   4  5.5  7.5 8     8  7.25   4.5    7  8   8   8     7  4]'; (回车)
draw(xj, y)(回车)

等大概10秒钟左右(可见通过软件来实行多项式插值运算速度是比不上硬件直接实现的),漂亮的图像就会绘制出来了。

还有一点很可惜,MATLAB这个软件售价很贵,一套完整的带有齐全Toolbox的MATLAB售价大概要3-4万美元,我也只能在系里的服务器上来运行MATLAB。
TOP
13#

不敢发烧 在 2004-11-16 17:08:43 发表的内容
按这个讲法,是否以后我可以用电脑来当音源?


假如阁下的电脑的声卡的电路保证避免电气误差,并且能够编出运行速度足够快的程序,并且能够杜绝机箱里面其他不必要的干扰,原则上来讲,可以。

其实,现在CD的制作流程里,基本上是首先是把混好音的母带转换为数码数据(这时这对数码数据是一个完整的大文件),然后把数据传输到计算机硬盘里(别害怕,硬盘的读写纠错方法保证没有错码的——除非硬盘有坏道),把曲目分隔划分好,然后再刻成玻璃母模,再送去压片场制造的。
最后编辑felixcat
TOP
14#

Hermite插值法还有一个难点在于,在运算的时候要知道真实波形曲线在数据点处的切线的斜率——但是这个信息在CD格式取样的时候是没有的。但是幸亏我们现在面对的是声音信号,声音波形的特点在于按等长坐标轴来描绘曲线的时候,每一段曲线都是相当“陡峭”,(因为声音一秒钟振动几万次,但是电平振幅少说都有零点几伏的变化),所以我们可以近似地把相邻的两点之间的连线的斜率作为曲线在该处的斜率——请注意这里的斜率的“近似”所造成的误差和本文前面讲的用线段联结数据点构成输出曲线的误差是两码事,它的误差经计算,最极端的情形(电平突然变成无穷大,实际上这是不可能的)最多也大概是10的负8次方。

除了Hermite插值法之外,还可以使用Lagrange(拉格朗日)插值法,它比Hermite的优势在于不需要估计斜率,光靠数据点就可以计算,不过要达到Hermite插值法的精度,Lagrange法要采用高一倍的多项式次数才行(也就是说12次Hermite插值的精度,等于24次Lagrange插值的精度)。不过从硬件实现的角度来看,Lagrange算法的时间复杂度要小一些——所以这些方法都是D/A转换器可以采用的好方法。

同样我们也可以理解,为何现在很多CD机采用“升频”的形式进行解码了,因为理论上越多的取样点,就可以在单位时间长度内进行越高次数的多项式插值。

(未完待续)
TOP
15#

国货当自强 在 2004-11-16 16:20:05 发表的内容
Wadia861的插值系统:
遥控器也允许用户选择3种数字滤波和插值算法。标准的,也是默认的算法,是wadia专利的V2.4 DigiMaster spline-fit插值算法.这种算法被设计成使内部的瞬时劣化(temporal smearing)最小化。根据wadia的文档,一个普通的D/A转换操作和低通滤波会把一个脉冲劣化超过大约±1.7ms。DigiMaster算法把这个误差减小到±0.13ms,这在很大程度上造就了wadia播放器精确,精准的声音。另一面是DigiMaster算法牺牲高频延伸达到瞬时精确度。wadia的文档显示从5到10kHz有一个微小的滚降,大约16kHz有1dB的下降,而18kHz有3dB。

另两种可选的算法使用独特的插值方法,通过3个串联的步骤达到他们32倍过取样:2x/8x/2x.这些算法提供了更好的高频延伸响应,实际上平坦的到达20kHz--代价是在这个过程中有较多的瞬时失真。这些算法实际上没有改进普通的转换器和滤波器,然而也可以把时域失真减小到±0.5ms。


那么说Wadia采用的是样条函数类的插值方法了。不过这里国货兄所说的似乎是在算法确定之后,Wadia如何减少电路运算所产生的误差方面——比如说所有二进制CPU都是采用浮点运算的,所以在算法误差基础上还要考虑电路运算误差等等——不过这是另外一个话题了,不属于算法上的范畴了。

另外瞬时劣化这个概念应该是从英文单词里直译过来的吧?它具体是怎么定义的呢?
TOP
16#

以上的问题在数值分里面称为“多项式”插值。到目前为止,多项式插值有五花八门的不同方法,都能给出极高的,甚至令人难以想象的高精度。比如说,Hermite多项式插值法(Hermite是19世纪法国著名的数学大师)在给定的区域内的逼近效果最为惊人,下面是它的一个例子:

[upload=jpg]Upload/200411169584110174.jpg[/upload]

图中比较细的那条曲线是随机给出的一条任意的曲线,按照Hermite插值法计算,仅仅以7次多项式(它的图像是图中用比较粗的那条曲线)就能够在 t 从1 到 4 的这段范围内达到无与伦比的精确度——大家看看就清楚了,两条曲线都重合在一起了。由此可想而知采用分段形式(也就是把上述那种精确的曲线一段一段头尾相接拼起来)的Hermite多项式插值法为算法运算的芯片,能够给出多么真实的信号了。

可能有人会说,上面那幅图里面你把那条粗线画得那么粗,是不是会把误差给隐藏起来呀?呵呵既然我们不相信自己的眼睛,那么这里我可以给出一个真真实实的数据——根据著名的“插值误差公式”,不管原始的波形是什么样子,7次Hermite多项式插值的误差都是10的负14次方那个数量级的,也就是说,误差最多就是0.0000000000000x(小数点后13个0,哈哈,问你死未?),在很极端的情况下,数量级前面或许会乘一个比较大的数,不过这仅仅会让精确度在小数点后面减去2-3个零而已。

并且我们还要知道,现在最新的比较高档的解码器,用的远远不止7次多项式来运算的,比如说很著名的“怀念”(Wadia)牌子的解码器,在4年前就开始用12次多项式插值(具体是哪种插值算法厂家保密)来进行运算,可以算出12次Hermite多项式插值(据我估计它很可能就是采用类似这种方法的,因为Hermite插值太厉害了,没有人能够抵挡得住它的诱惑的,哈哈)的最大误差是10的负27次方(也就是0.00000000000000000000000000x这种样子,小数点之后26个零!够吓人的吧),大家可想而知这种解码器解出来的声音信号,是多么地精确啊!不管原始的声音信号波形是如何复杂,这种多项式插值都能还原出极度准确的信号出来。

(未完待续)
最后编辑felixcat
TOP
17#

jjmok372 在 2004-11-17 13:59:58 发表的内容
felixcat大侠,问一个彩鸟问题。复杂的声波能不能分解成简单的波形呢?也就说用象你上图那样简单的波形来合成乐器的声音?该怎么办?


恩,这个肯定是可以的。其实这就是著名的傅立叶分解,它在信号分析领域里面起了奠基性的作用,其具体原理是这样的(因为HTML网页不支持数学公式,所以只能贴图,请见谅):

[upload=jpg]Upload/2004111715221813497.jpg[/upload]
TOP
18#

enrique 在 2004-11-16 14:06:23 发表的内容
根据采样点进行曲线拟和是大学微积分的基本课程,并非高不可攀。 之所以没多少人做这个因为市场太小。


据我所知,中国、美洲、欧洲的所有大学的微积分课程,不可能讲授数值插值拟合的。因为这方面内容是属于代数和泛函分析结合的领域,而微积分仅仅是属于数学分析里面的一个分支而已,不可能有任何一位作者或者任课老师会把代数和微积分混在一起讲的。

实际上,数值方法一般是在一门叫做“数值分析”的课程里面讲授的。插值法历史悠久,历史上不少名垂青史的数学大师穷其一生精力研究,幸运者也一般只能有些许创建而已,比如说伟大如德国的高斯(Gauss),在这方面也仅仅作出了“高斯数值积分”算法而已。以上文章所讲到的方法,说起来轻巧,其实里面细节多多,麻烦多多,有很多理论上的问题,甚至在80年代的时候才得到彻底的解决。上面说的这些方法,内涵实际上十分深厚,我看完下面这一叠讲义所讲述的内容,心里还是有不少地方觉得没弄明白:

[upload=jpg]Upload/2004111614403352320.jpg[/upload]

上图仅仅是讲义的目录提纲。下面这摞书仅仅包含了上述讲义里面的部分内容:

[upload=jpg]Upload/2004111614472695047.jpg[/upload]

可见插值理论内容何等丰富。
TOP
19#

呵呵,那么就来谈视觉。视觉也很容易被骗了。现在我考考大家,上面我画的三幅图像,实际上都是由很密集的数据点组成的(所以人看上去就像一条联在一起的曲线),我选用的精度(数据点间隔)有1/100和1/1000两种,大家能看得出哪幅图是1/100精度,哪幅是1/1000呢?回答得有信心吗?
TOP
20#

肯定不会有错的。你把编译的结果贴出来看看是出什么问题了?
TOP
发新话题 回复该主题