java的声音,淡入淡出效果,使用FloatControl

问题描述:

我试图实现对我的MP3播放器淡入淡出效果。 我正在使用 FloatControl volumeControl =(FloatControl)line.getControl(FloatControl.Type.MASTER_GAIN); 因为FloatControl.Type.VOLUME引发异常(Unavaliable Control)我不知道为什么。 我需要一些关于算法的帮助,因为它不能正常工作。继承人代码:java的声音,淡入淡出效果,使用FloatControl

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增加,那么你很好。

+0

谢谢,我不知道。我想弄清楚FloatControl是否使用Db – fredcrs 2010-09-08 12:48:50

+0

如何使用log来映射这些值? – fredcrs 2010-09-08 13:22:36

+0

我无法使用日志工作。不知道如何将其映射到日志功能。你能帮我吗? – fredcrs 2010-09-08 14:38:44