低音增强 - JDA Lavaplayer

Bass Boost - JDA Lavaplayer

当您将 Lavaplayer 与 JDA (Java Discord API) 一起使用时,您将如何创建低音增强命令?

有一个像!bassboost 0-100这样的命令。

经过几个小时尝试不同的方法使其正常运行后,我最终使用了 Lavaplayer EqualizerFactory。

首先我从 here

复制了这些值
    public static final float[] BASS_BOOST = {
            0.2f,
            0.15f,
            0.1f,
            0.05f,
            0.0f,
            -0.05f,
            -0.1f,
            -0.1f,
            -0.1f,
            -0.1f,
            -0.1f,
            -0.1f,
            -0.1f,
            -0.1f,
            -0.1f
    };

然后我创建了一个新的 EqualizerFactory 并将其作为过滤器添加到公会音乐管理器中,还设置了帧缓冲持续时间以使 bass-boost 花费更少的时间生效,如下所示:

        this.equalizer = new EqualizerFactory();

        this.player.setFilterFactory(equalizer);
        this.player.setFrameBufferDuration(500); // prevent bass boost taking time to take effect

然后我终于创建了一个小方法,您可以提供从 0-200 设置 bass-boost 级别

    public void bassBoost(float percentage)
    {
        final float multiplier = percentage / 100.00f;

        for (int i = 0; i < BASS_BOOST.length; i++)
        {
            equalizer.setGain(i, BASS_BOOST[i] * multiplier);
        }
    }

以便bass-boost对当前播放的歌曲生效我需要这个:

playerManager.getConfiguration().setFilterHotSwapEnabled(true);

仅此而已!