代码之家  ›  专栏  ›  技术社区  ›  fredcrs

java声音,fadeIn效果,使用FloatControl

  •  0
  • fredcrs  · 技术社区  · 15 年前

    我试图实现淡入效果我的mp3播放器。 我正在使用 FloatControl volumeControl=(FloatControl)行.getControl(FloatControl.Type.MASTER\u增益); 因为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();
        }
    }
    

    谢谢你的帮助,谢谢!

    1 回复  |  直到 15 年前
        1
  •  1
  •   Nick    15 年前

    请记住,人的耳朵听不到线性,所以增加一个稳定的X vps不会听起来像一个平滑的褪色。你需要在里面放一个日志函数。然后需要将线性增加映射到对数值。当然,这都是假设音量控制单元不是分贝。如果你增加了分贝,那你就没事了。