BASS音量(线性音量)和directshow音量的转换

本篇文章属于《518超市播音软件开发日志》系列文章的一部分。
我在开发《518超市播音软件》(http://www.518boyin.com/)的时候,在用户层面是用线性音量表达0-100,但是还用到directshow播放音乐,范围是0-10000不是线性的。怎么转换呢? 下面是我的转换代码,基本可以用,但是不包装是最好的最正确的代码。
 

int Tapp::lin2ds(int vol, BOOL bMute)

{

if (bMute || vol <= 1) return -10000;

else return (log10(1.0*vol) - 2.0) * 5000.0;

}

double Tapp::lin2bass(int vol)

{

double dVol = (double)vol / 100.0;

double rsl = (0.998*pow(dVol, 2) + 0.003*dVol - 0.001);

if (rsl < 0.0) rsl = 0.0;

return rsl;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值