Hi!
Habe folgendes Problem:
Mit AudioSystem bekomme ich den standard Java Audio Mixer 1.0 und von dem eine SourceLine (die ich mit einem input stream verknüpfe), die mir u.a. VolumeControl zur Verfügung stellt. Caste ich nun diesen Control zu FloatControl und ändere die Lautstärke mit setValue(), so passiert nix: die Lautstärke bleibt gleich und soger beim tracen von getValue() des Controls bleibt derWert konstant (0.0).
Was mache ich falsch?
Hier ein Code-Ausschnitt:
String fileName="test.wav";
File file=new File(fileName);
AudioInputStream
inputStream = AudioSystem.getAudioInputStream(file);
AudioFormat inputStreamFormat=inputStream.getFormat();
Mixer.Info[] mixerInfoPool=AudioSystem.getMixerInfo();
Mixer mixer=AudioSystem.getMixer(mixerInfoPool[4]);
Line.Info[] dataLinePool=mixer.getSourceLineInfo();
SourceDataLine sourceLine=(SourceDataLine)mixer.getLine(dataLineP ool[0]);
Control[] controlPool=sourceLine.getControls();
FloatControl volumeControl=(FloatControl)controlPool[0];
System.out.println(volumeControl.getValue());//gibt 0.0 aus
volumeControl.setValue(Float.parseFloat("0.5"));
System.out.println(volumeControl.getValue());//ebenfalls 0.0
sourceLine.open(inputStreamFormat);
sourceLine.start();
...
Danke vielmals für Hilfe!
Habe folgendes Problem:
Mit AudioSystem bekomme ich den standard Java Audio Mixer 1.0 und von dem eine SourceLine (die ich mit einem input stream verknüpfe), die mir u.a. VolumeControl zur Verfügung stellt. Caste ich nun diesen Control zu FloatControl und ändere die Lautstärke mit setValue(), so passiert nix: die Lautstärke bleibt gleich und soger beim tracen von getValue() des Controls bleibt derWert konstant (0.0).
Was mache ich falsch?
Hier ein Code-Ausschnitt:
String fileName="test.wav";
File file=new File(fileName);
AudioInputStream
inputStream = AudioSystem.getAudioInputStream(file);
AudioFormat inputStreamFormat=inputStream.getFormat();
Mixer.Info[] mixerInfoPool=AudioSystem.getMixerInfo();
Mixer mixer=AudioSystem.getMixer(mixerInfoPool[4]);
Line.Info[] dataLinePool=mixer.getSourceLineInfo();
SourceDataLine sourceLine=(SourceDataLine)mixer.getLine(dataLineP ool[0]);
Control[] controlPool=sourceLine.getControls();
FloatControl volumeControl=(FloatControl)controlPool[0];
System.out.println(volumeControl.getValue());//gibt 0.0 aus
volumeControl.setValue(Float.parseFloat("0.5"));
System.out.println(volumeControl.getValue());//ebenfalls 0.0
sourceLine.open(inputStreamFormat);
sourceLine.start();
...
Danke vielmals für Hilfe!
Comment