【问题标题】:MediaPlayer.Volume controlMediaPlayer.音量控制
【发布时间】:2012-05-11 06:23:05
【问题描述】:

我有一个滑块,可以在其中获取 0 到 100 之间的值来调整音量。 MediaPlayer.Volume 需要一个介于 0.0 和 1.0 之间的值,而 0=-96db 和 1=-0db。目前我使用以下代码来调整滑块的线性值:

 float newVolume = (float)(Math.Sqrt(sliderValue) / 10);
 newVolume = MathHelper.Clamp(newVolume, 0.0001f, 1.0f);
 MediaPlayer.Volume = newVolume;

这比直接将 0 映射到 100 值效果更好,但与下半部分相比,上半部分的调整仍然相当低。有没有更好的解决方案?

【问题讨论】:

  • 人耳是对数的,不是二次的。如果它的单位是分贝,音量应该已经弥补了这一点。如果没有,你会使用 Math.Log。

标签: c# xna media-player


【解决方案1】:

这对我有用,其中“值”是从 0 到 100

        value = MathHelper.Clamp(value, 0f, 100f);
        var logged = Math.Log(value + 1) / Math.Log(101);
        MediaPlayer.Volume = MathHelper.Clamp((float)logged, 0.001f, 1.0f);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多