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

WSG121212 2021-05-13 09:20:38
本篇文章属于《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;
}
...全文
339 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧