本帖最后由 MaxDigital 于 2020-2-20 11:42 编辑
音乐播放软硬件嘛,当然是将录音信息转成人耳听得到的音波,最后是音箱/耳机,其前面是放大器,最前面是各种储存录音信息的载体,在此单纯谈数字音乐。 数字音乐最初录音时多半是PCM码,也就是记录音波转成的电压振幅,音乐播放软硬件要做的也就是将这PCM码再转回电压振幅交给放大器推动音箱/耳机; 极少数录音是DSD,类似。
录音经过混音制作成最后的音乐CD、档案、internet上的stream,无论何种形式/载体,都是数字资料,只是以各种格式储存/传递;CD上储存的就是PCM码,若是储存在PC或手机等各种形式的"计算机"的档案里,常见的格式WAV、AIFF里面也是PCM码,只是加了些头尾打包起来(曲名、演出者、封面照片之类的...); 为了省储存空间,音乐资料可以压缩成大约1/4大,却无损其内容,这主要格式是ALAC、FLAC,还原后当然还是与原本的PCM码完全相同,不信你可以自己比对看看~写程序的人当然自己都先验证过了...你去抓ZIP档解开时,会不会怕出错?若是你怕会错,那,千万别用ATM领钱、转帐喔~请当个摩登原始人...
十几年前internet初起时,频宽不够,那时为了能在internet传送音乐便搞出了MP3这种压缩手法,这个会先砍掉高频再压缩,资料量剩下1/10,当然,这就不可能还原成原本的PCM码,象是加了马赛克的影片回不去了...后来的AAC也类似;这些有损失的压缩格式,声音当然很差,吵乱刺平面干涩...
音乐播放软硬件做的事,首先就是由CD、档案、internet、LAN、WiFi、Bluetooth...任何来源,取得数字资料,若有压缩的就先解开还原成PCM码,将PCM码送到DAC(数字模拟转换器),转成电压振幅,再交给放大器推动音箱/耳机,就这样。
这过程会出错吗? 数字这部份,几乎不会错,数字的作用就在于误差容忍度很高,抗噪声能力很高,信息正确度很高;倘若真的出错,这当年用CD唱盘的人应该会有经验,有时CD片脏了、刮伤了,就会"跳针",音乐断断续续;如今的各种形式的档案极难得出错,你灌OS好几GB有碰过出错吗?别再做梦说音乐资料有错好吗?
认真讨论细节,CD唱盘唱的时候若碰到一、二个资料读不到,可以用插补算平均的方式填进去,不过这是因为CD唱盘是一倍速度唱,必须实时得到资料,而CD片转成档案进计算机都是N倍,读不到再重读就行,极难得出错;这种事请自己实验看看,很简单啦,就同一片CD读十次,比较档案,换一只CD drive、软件、计算机再读比较看看不就知道了?他人说一万次,不如自己做一次实验;不过,记得档案头尾的空白得去除对齐之。
既然数字部分都相同,那唱来都不同的原因是在?当然是模拟部分啊~ 正如换只DAC唱来不同,难道是其中一只DAC的数字出错吗?这种烂DAC你会买吗?别闹了...那,为何我用电脑不同的档案格式听来不同呢?这就得要谈DAC细部了,这是DAC IC的原厂建议电路图。
绝大多数CD唱盘、DAC、手机、电脑、ipad...这式各样的音乐播放软硬件最后都有这样一个DAC IC,有些则是将这个也包进了主IC,数字讯号就是由这个IC转成模拟讯号;先看左边5, 6, 7脚,这三个构成名为I2S的数字音乐讯号界面,数字音乐PCM码就是由这三只脚送过来;另外还有第3脚 master clock,这是IC内部的工作频率时钟。 正常工作的DAC,这数字界面四只脚讯号都能让声音很正常的唱出来,也就是很稳定不间断连续的转换成模拟电压讯号输出;但,这只是表面上哪...就像你唱歌,有时候,换气不顺会抖~
I2S和master clock这数字界面共二个clock时钟讯号,这clock若是抖,就像你唱歌时抖一般,唱出来的音乐当然也会抖囉~clock用来驱动DAC工作,就象是赛跑时鸣枪!起跑! clock就是那枪声,数字资料就是那跑者;人耳挺多能明确辨认一秒抖个几次这种,几十次以上就无法明确知道有在抖了,何况一秒几千次的抖法哪...这clock频率至少是44100Hz。但是,不同抖法之间,人耳其实能明确辨认出不同!抖的越少,听来越是干净清晰自然。早期CD唱盘刚出现时人人讶异其清晰,渐渐的发现有些不对劲,就是这么一回事。这clock抖,就称为jitter,主要影响是极高频、音像、音场、微微的吵刺。 有时候,你边唱歌边跳舞,上气不接下气...DAC工作时,电源若是不干净,也是这般现象;电源有数字电源、类比电源,数字电源不干净,也会造成jitter;像是你在起跑线准备好等枪声,嘿,偏偏这时飞机呼啸而过,听不清楚...
因为数字的判定是高于某个电压算是1,低于某个电压算是0,而这某个电压与电源电压有关;clock由低往高冲时,就算clock再准波形再漂亮,电源电压抖,每次判定枪声响的电压电压都不同,结果当然也是抖,也就冒出jitter来囉~ 模拟电源不干净,就象是你站在个抖动的台上唱歌,台下的人听来也是抖啊~台怎么抖,发出来的声音就会有这抖法与音乐的inter-modulation,jitter的抖法也是类似效应,只是频率高很多。综合以上,要让DAC唱的好,就是给它精准的clock与干净的电源,如此而已。
那,前面提到说为何用电脑唱AIFF和ALAC档听来会不同呢?我们可以想想,这二者到底差在哪?ALAC会被转成PCM码,AIFF里面也是PCM码,最后送到DAC都是相同的资料;资料没差异,那差异就在就是clock与电源了;读AIFF vs 读ALAC差在哪?差在ALAC还得解压缩,CPU比较忙,就像你边跳舞边唱歌气会喘啊,CPU一忙,就吃掉大量电,电源波动就大,噪声就多,不干净,DAC唱出来不就有差异?不信你将ALAC先转成AIFF,二个AIFF档案分别存在二只刚format的同款随身碟里,插在同一个USB port唱看看有没有差? 人客啊~没那么玄啦~数字就是数字,出错机率极低,重点都在模拟啦~
那,实际上该怎样做最好呢? 由以上的讨论,重点在,尽可能让DAC的clock准、电源干净;目前认真的乐迷该都是以计算机储存音乐(容量才够啊~),再送给DAC唱出来;因此,该尽量让DAC不受计算机干扰,DAC最好的形式,该是用Ethernet或WiFi界面,与计算机完全隔绝无直接接触,不过这类型产品不多,个别机种质量又是另一回事;最普遍的该是USB界面,这当然得挑跑asynchronous异步的,最好还加上UI1或UF1隔离/滤除地线噪声。 至于摆在计算机里面的呢...你想,计算机的电源模块才卖那么点价格,怎么会干净呢?就算再贵,单是CPU忽忙忽发呆,几十W功率这样变来变去,电源会干净吗?老话一句,计算机不是专用来唱音乐的,别要求它电源干净,该利用其超低价超大容量这优点,另外用好DAC搞定音响的事。
那,CD唱盘这种形式呢?啥?你还在用?好吧,原谅你年纪大了...CD唱盘里面也有个转动的转盘吧?你有没有看过这转盘转的时候?抖抖抖...超严重...当年高倍数的CD ROM转起来时,那真是...连桌子都会跟着抖啊...你想,吃电很重的马达这样抖,会不会影响电源?
你可以试试看,听CD片第一曲和最后一曲有啥差别?更精准点,烧一张CD片,里面全都是同一首歌,再听第一曲和最后一曲的差别...有人问到计算机上的不同软件对声音的影响,首先,该先问,这软件是否会动到资料?如果设定都正确,Mac上的软件很容易做到不更动资料,顶多是interger 16 bits转成floating point 32 bits(Mac OS API标准声音资料传递格式)这类的;有些软件如Aramara会加料,加些dither之类的,这种就不谈了,单是谈不动资料的,如iTunes、JRiver、Quicktime;至于PC上嘛,那就有点麻烦,如果这软件call DirectShow API就会经过K mixer,任何资料都会被转成48KHz sampling rate,这资料就动过了,得用WASAPI之类的避免,反正还是有招数,用对软件还是能搞定确保资料不会被动到。
那,怎么验证这点? 挺简单,就输出再输出,与原始档比较就搞定啦~数字就是这样很容易验证;去抓个virtual sound device来灌,让播放软件输出到那个virtual device,存档,与原始档对照就知;几年前我的作法是用光纤输出loopback拉回来;当然这还是得先对齐二个档案,还有一点可能的误差就是那个interger转floating point的分辨率差,因此比较好的验证法是二个档案都抓进声音编辑软件,其一反向,再二者mix,结果的振幅若都低于1bit就没错。 以上很容易确认使用的二个软件都没动过资料,既然如此,问题就又回到影响DAC的三个变因之二,clock与电源,这都是纯硬件,不是计算机的应用软件该管的,也不能让应用软件管这种事;也就是说,写软件的人哪会知道他怎么写会影响clock与电源啊?当然更不知道怎么写clock与电源会比较干净囉~每个硬件都不同啊... 不过,实际上软件要影响这二点倒还不难,buffer size就是其中一项,以44.1KHz的音乐来说,每秒必须送44100笔sample给DAC,如果buffer size是256 vs 512,这送的频率就是二倍之差,产生的噪声频率就是二倍差,而计算机的设计就是尽量压低成本,藉数字抗噪声能力能过关只要噪声不要大到让资料出错就好,因此这噪声很容易就传到DAC去,除非隔离,透过Ethernet、WiFi或猫窝的UI1这种方式。 至于哪个buffer size好?这没啥绝对,因为每个硬件滤除噪声的能力都与频率相关;而且buffer size影响了电源噪声,也会因此影响clock的jitter,而jitter与最后输出的类比讯号之间的关系非常复杂,每个DAC IC都不同。 还有个buffer size是硬盘的buffer size,这通常是OS内设定的,应用软件动不了;这也延伸到为何音乐档案摆在不同的储存装置听来不同,buffer size会影响,使用的电路(SATA、USB、Ethernet、PCI Express)不同,产生的噪声对DAC的影响不同,当然DAC输出的模拟讯号也不同,但,老样子,正确设定下,DAC收到的资料没都错。 搞清楚这些,要尽量搞好DAC的声音不会太难,也就是,无需耗费时间去弄计算机上的东西,专心搞好DAC的clock、电源与隔离计算机噪声。 至于clock对声音的影响,DAC2加上re-clocking后声音大进展,这re-clocking不可能改善资料,其输出资料只会完全相同或是错误,一旦错,那可是乱七八糟没啥一定的,这我还真的碰过几次,做第三只DAC2加上这re-clocking时,没焊好,声音就是噪音啊~另一次则是没盖顶盖,碰上大雷雨,雷电电磁噪声一轰,沙沙沙沙~~吓死我啦~加上re-clocking声音会改善,就证明问题不在资料正确与否,而是clock与电源。 妙的是,DAC2的re-clocking用的clock就是DAC2上唯一的clock来源,被重锁重送的资料也是由此clock导出的clock传来的,二者完全同步;那,为何会改善? 同步只表示频率相同,可没说波形一样漂亮。
以最靠近clock源,受干扰最低的clock来重锁重送jitter最低,声音当然最漂亮啊~这也验证了clock的质量(也就是jitter),经过一串电路复制后确实会劣化,其因素包含电源、阻抗、电磁干扰,越是源头越准,应该尽可能让DAC接近clock源。
|