网站菜单
|
日记 - 科普-FC上的DPCM(一)
DPCM是Delta PCM的简称,就是经过调制处理之后的PCM音频,能比普通的线性PCM省下很多空间且音质不至于太差。 而FC的2A03芯片使用的是1bit DPCM,用一个比特位来存储波形的变化。 这样听着可能没什么概念。对比一下,同级的1bit PCM也只能用一个比特位来存储,但没经过调制,所以只有两个状态:低、高。听起来嘛……可以联想成最大音量的50%方波(滴滴滴嘟嘟嘟的那个),然后再想象用44100Hz的采样速率放杂乱的这种波形给你听…… 那为什么不直接用PCM呢?我们现在使用的PCM音频大多是16bit以上的,存储空间的开销就至少16倍,这样放采样,在那个空间就是黄金的年代显然不可能,况且FC的机能根本支持不了(其实是可以用$4011通道播放7bit PCM的,但如果这样做,FC就只能听音乐,CPU压根没空处理游戏) 很明显,如果不使用DPCM,直接上PCM,要么效果是构思,要么就是浪费钱。 既然DPCM好处这么多,为什么前期游戏都不用呢? 首先,虽然DPCM省空间,但也不是不占空间。随便一个采样几百字节,几个就用上KB了!要是放上一个八度12个采样,或一套标准架子鼓11个采样,就要占上好几甚至十几KB!这还怎么写程序、放图像进去!(FC默认可寻址的内存空间只有64KB,而初期的小游戏ROM一般只有几KB出头) 而且1bit DPCM由于其本身的特性,也不适用于放旋律。就算你财大气粗想采样一套钢琴,空间有得是,直接88个采样塞进去,效果也不会太好。这就要说到DPCM这个「Delta」调制的原理了 前面说过1bit DPCM是用0、1来表示波形的"上、下",好处是音质不会差到离谱,坏处就是——bit位太少了! 一次只能表示波形的上或下,还只能在一个限定的变化范围内,如果遇到波形落差极大的高频信息,就完全处理不过来,只能是依托答辩。而且很多乐器的起音也因为这个无法实现,因为会和后面的波形混在一起。 而且,没有给静音准备的bit位!如果波形是一条水平直线,转换成1bitDPCM,就是"01010101010101010101……",听着就是响度小、频率高的噪音。放大看就如同城墙一样(不是 因此,DPCM多用于无音高的简短打击乐器。什么?你想要混响?建议回家做梦,梦里啥都有… 那,SUNSOFT的DPCM放贝斯是什么黑科技?? 这个……未完待续! ![]() ![]() 评论: (6) |