【问题标题】:java sound, fadeIn effect, using FloatControljava声音,fadeIn效果,使用FloatControl
【发布时间】:2011-04-07 21:33:01
【问题描述】:

我正在尝试对我的 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();
    }
}

不胜感激,谢谢!

【问题讨论】:

    标签: java audio effect


    【解决方案1】:

    请记住,人耳的听觉不是线性的,因此通过稳定的 X vps 增加听起来不会像平滑衰减。您需要在其中放置一个日志功能。然后,您需要将线性增加映射到对数值。这当然都是假设音量控制单位不是分贝。如果你增加 db 那么你很好。

    【讨论】:

    • 谢谢,我不知道。我想弄清楚 FloatControl 是否使用 Db
    • 如何使用日志映射这些值?
    • 我无法使用 Log 让它工作。不知道如何将其映射到日志功能。你能帮帮我吗?
    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多