我遇到的问题是音频文件的分贝数仅从 programVolume (变量)的初始值更改,但我有一个 JSlider 可以更改变量的值;但是,它不会更改文件的分贝数。我要添加/更改什么以确保基于从 JSlider 设置为变量的值更改分贝数。
File fileSong = new File (filePath);
AudioInputStream input = AudioSystem.getAudioInputStream(fileSong);
clip = AudioSystem.getClip();
clip.open(input);
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(programVolume);
clip.start();
编辑:
我添加了以下代码:
File fileSong = new File (filePath);
AudioInputStream input = AudioSystem.getAudioInputStream(fileSong);
clip = AudioSystem.getClip();
clip.open(input);
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
float range = gainControl.getMaximum() - gainControl.getMinimum();
float gain = (range * programVolume) + gainControl.getMinimum();
gainControl.setValue(gain);
对于我的 JSlider(在 ChangeEvent e 方法中)
programVolume = (float)volume.getValue() / 100;
我仍然面临同样的问题。从 JSlider 收到的新值不会改变音量。只有 programVolume 的初始值会改变声音。