pcm音乐
刚开始接触音乐的几个词汇就是无损,有损,高品质,高码率等等,搞得晕头转向。反正不管什么大就完了大就是好的。(嗯,确实是对的!)
一天和同事聊起了IIS上传输的pcm数据丢失,我问你知道pcm数据是啥吗?同事只知道他是一个数据,不知道这个数据究竟是啥东西!我又问了两个人,居然也不清楚?好吧!所以今天第一篇关于音乐的文章,我就想先从音频的基础-----------pcm数据谈起。
众所周知声音是一种声波,波这歌东西就存在波峰波谷,跌宕起伏。我们又是如何把这声音保存下来的呢?就是通过麦克风的收音功能。在很久以前的时候麦克风的收音传感器就是一个压电传感器,当人说话时带动压电传感器颤动,从而使压电传感器产生了电压变化值,把这歌电压的变化值实时的保存下来就是我们期望的pcm数据了!但是一堆pcm数据我们应该怎么播放出去呢?对!另一个关键因素就是时间,在特定的时间播放出去特定的声音大小,也就是电压值,就还原了我们麦克风收音时的音乐。我们不妨假设一个直角坐标系,横轴是时间,纵轴是电压值,这样就很容易看出来,如下图。
突然想想老头子那样说说后来的事。后来压电传感器本身这个东西就不灵敏,然后就有了后来灵敏的电容麦克风,对声音的感知就更加灵敏了。对了!忘了最重要的一环!就是ADC转换器!
一个声音转化为的流程如下:
音波->mic头(麦克风)->ADC->PCM->WAV
ADC就是模拟转数字,用于采集模拟的电压值,然后再把这个模拟的电压值进行数字量化。
人说话时麦克风产生了波动的电压,电压再由ADC进行采集得到量化的数字电压值,这个数字的电压值就是pcm数据了。
这里突然想起了一个很有趣的事情,就是大家几乎没见过.pcm结尾的音乐文件吧!因为pcm数据就是普普通通的电压值,根本没办法按照时间来播放。
平常pcm数据都原封不动的存放在wav音乐文件中,这个是wav成为无损音乐文件的原因。
那pcm他是怎么存放在wav中的呢?我们下一次将详细讲解wav音乐文件格式,c语言去解析wav代码和嵌入式设备播放wav音乐文件的代码编写思维(硬件:stm32f103ze,RTOS:rt-thread)。