(转) IDirectSoundBuffer::SetVolume的参数与音量分贝的函数关系

假如将播放器的控制音量切割成0-100的话,由于IDirectSoundBuffer::SetVolume(LONG lVolume)中参数的输入值是[-10000,0]

  1. MySetVolume( DWORD inputVolume)
  2. {
  3. double decibels;
  4. DWORD dsVol;
  5. if (inputVolume==0)
  6. dsVol = DSBVOLUME_MIN;
  7. else if (inputVolume>10000)
  8. dsVol = DSBVOLUME_MAX;
  9. else
  10. {
  11. decibels = 20.0 * log10((double)inputVolume / 100.0);
  12. dsVol = (DWORD)(decibels * 100.0);
  13. }
  14. pDSBuffer->SetVolume( dsVol );
  15. }

当然,也可以将音量控制分割成0--10000了,基本的公式就是这样的。

有篇文章可以参考参考:http://www.animations.physics.unsw.edu.au/jw/dB.htm#definition

转自:http://blog.csdn.net/sky04/article/details/7070418

上一篇:SOA 与 DDD


下一篇:rabbitmq系统学习(三)集群架构