假设我有一个可以在0和1之间的滑块。SoundTransform.volume的范围是0(静音)和1(全卷)之间,但是如果我使用一个线性函数,让我们说SoundTransform.volume = slider.volume,结果相当不愉快。
我真的没有研究人类的耳朵,但我曾经听说过人类的感知是对数的,或者类似的东西。我应该使用什么算法来设置SoundTransform.volume?
解决方法
人类的感知通常是对数的,当它涉及到诸如光度等事情时,这使我们能够注册对我们的环境的小“输入信号”的小变化,或换句话说:总是实现变化的可感知的物理量相对于其价值…
因此,您应该修改卷以指数增长,如下所示:
y = (Math.exp(x)-1)/(Math.E-1)
你也可以尝试其他基地:
y = (Math.pow(base,x)-1)/(base-1)
基数的值越大,效果越强,开始时较慢的体积开始增长,最终增加的速度越快…
一个简单的方法,给你类似的结果(你只在0和1之间的间隔,因此近似很简单,实际上),是指数原始值,如
y = Math.pow(x,exp);
对于exp大于1,效果是,输出(即在你的情况下的音量)首先上升更慢,然后更快到结束…这是非常类似于指数函数…更大的exp,更强效果…
greetz
back2dos