Вы можете считать это неприемлемым взломом, но он работал в MP3-плеере, который я написал. Требуется небольшое добавление кода в один из классов JLayer.
Добавьте следующий метод в javazoom.jl.player.JavaSoundAudioDevice.
public void setLineGain(float gain)
{
if (source != null)
{
FloatControl volControl = (FloatControl) source.getControl(FloatControl.Type.MASTER_GAIN);
float newGain = Math.min(Math.max(gain, volControl.getMinimum()), volControl.getMaximum());
volControl.setValue(newGain);
}
}
Этот новый метод позволяет затем изменить громкость с помощью кода, подобного следующему.
if (audio instanceof JavaSoundAudioDevice)
{
JavaSoundAudioDevice jsAudio = (JavaSoundAudioDevice) audio;
jsAudio.setLineGain(yourGainGoesHere);
}