本篇文章屬于《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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283921.html
上一篇:c語言鏈表出現段錯誤怎么解決
