我试图对我的mp3播放器实现淡入效果。
我正在使用
FloatControl volumeControl =(FloatControl)line.getControl(FloatControl.Type.MASTER_GAIN);
因为FloatControl.Type.VOLUME引发异常(不可用控件),我不知道为什么。
我需要有关该算法的帮助,因为它无法正常工作。
这是代码:
public class FloatControlFader
{
public static void fadeIn(final FloatControl control, final float from,
final float to, final int seconds)
{
final float vps = ((to-from) / (seconds*10));//Volume incrased/100millisecond
control.setValue(from);
Thread t = new Thread(new Runnable(){
public void run() {
for(int i=0; i < seconds*10; i++)
{
try
{
Thread.sleep(100);
}
catch (InterruptedException ex)
{
}
System.out.println(control.getValue()); //for DEBUG
control.setValue(control.getValue() + vps);
}
}
});
t.start();
}
}
希望得到任何帮助,谢谢!
最佳答案
请记住,人的耳朵听不到线性声音,因此以稳定的X vps递增不会听起来像是平滑的淡入淡出。您需要在其中放置一个日志功能。然后,您需要将线性增量映射到对数值。当然,所有这些都假设音量控制单位不是分贝。如果您增加db,那么就可以了。