音乐音量调节

pcm音量调节

今天有人问我pcm数据音量调节的问题。那今天就聊一聊音乐音量这个话题。
对于音乐播放器来说,音频播放器硬件分为两个大模块,一个是音频数据源pcm模块,一个是dac功放模块,两者之间通过iis信号线通信,iis信号线上传输的就是pcm数据。
对于android系统来说,音乐解码器把音乐数据解码成pcm数据,通过android的硬件抽象层调用linux的声卡,在通过声卡打包pcm数据为iis信号,发送pcm到dac端。dac端负责iis数据解析和pcm数据播放,播放出变动的电压值。但是这个电压值是一个小电压,一般只能驱动一个小欧姆的耳机,喇叭,声音会特别特别小,不能满足正常的生活需要,因此需要对这个小电压进行放大,也就是经过功放模块对声音大小进行控制。
正常的设备音量调节都在功放端进行音量调节,但是今天有大哥问我怎么在pcm端进行音量调节,我就想出了一个小方案。大哥的问题是24采样精度的pcm数据怎么通过调节pcm数据来调节音量大小。我听到这个话第一个想到的就是减呗,我特么又想了想,要是直接减了那可太傻逼了,那特么声音就失真了。第二想法就是成比例进行缩放吧!既然是24采样精度的pcm数据,我首先就要说说采样精度这个东西,我们平常见到的采样精度都是8bit,16bit。然后音乐软件上总会推出24bit采样精度的歌,说高品质等等。最后dac模块最大支持32bit采样精度。那么这个采样精度就是dac的位数,8就是2的8次方的精度,比如我的基准电压是3.3伏,那么我的最小精度电压就是3.3伏除以2的8次方,假如的我的音乐是8bit采样精度的pcm,那么这个pcm值就可以直接写到dac上。同理,我这个音乐是24bit采样精度的pcm,想往8bit位数的dac里边写,那我们就需要把pcm值进行一个比例缩小,pcm数据乘上2的8次方除以2的24次方。
溜题了溜题了!大哥问我24bit的pcm数据怎么缩小,把数据变成浮点型,然后乘上一个比例系数,分十个音量阶梯你就乘0,1/9...,9/9。然后再把浮点型数据的小数点后边去掉就完了。但是真的不建议这么整,还是在功放模块调节更好一点。
最后想告诉大家一个小秘密,一般的android手机系统内部根本就不支持24bit的音乐进行重采样。你播放的24bit音乐,经过解码器之后的pcm一般都是16bit的音乐,在经过android的音乐重采样生成32bit采样精度,但是重采样之后的32也就那样,很你解码之后的16bit的音乐数据一样,重采样的作用也就是把输入的各种格式重采样变成同一种格式,来减少声卡的功能压力。所以说用手机播放音乐,也没必要非得追求24bit的音乐,手机播放效果也没那么明显,智商税的效果更高一些。想听好的音乐就买一个专业的设备吧!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式吴彦祖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值