# Java Sound API - Lautstärke ändert sich nicht



## Dragonfire (14. Sep 2009)

Hihu,
ich wollte in meinem Programm mal einen Sound abspielen lassen.
Nach ein bisschen Lesearbeit hab ich es zum Laufen bekommen.
Was ich aber nicht hinbekomme, ist die Lautstärke zu ändern ...

Ich hab zwar den FloatControl und kann die Variable setzten,
aber irgendwie hat das keine Wirkung...
ob 0 oder 0.1 oder sonst was ...

hier mal mein Code:


```
Thread t = new Thread() {

@Override
public void run() {
	try {

		AudioInputStream audioInputStream = AudioSystem
				.getAudioInputStream(new File(
						"D:\\Eigene Dateien\\Downloads\\alarm\\evakuation.wav"));
		BufferedInputStream bufferedInputStream = new BufferedInputStream(
				audioInputStream);
		AudioFormat af = audioInputStream.getFormat();
		int size = (int) (af.getFrameSize() * audioInputStream
				.getFrameLength());
		byte[] audio = new byte[size];
		DataLine.Info info = new DataLine.Info(Clip.class, af,
				size);
		bufferedInputStream.read(audio, 0, size);

		Clip clip = (Clip) AudioSystem.getLine(info);

		clip.open(af, audio, 0, size);

		FloatControl control = (FloatControl) clip
				.getControl(FloatControl.Type.MASTER_GAIN);
		control.setValue(0f);
		System.out
				.println("supported: "
						+ clip
								.isControlSupported(FloatControl.Type.MASTER_GAIN));

		System.out.println("db: " + control.getValue());

		clip.start();

	} catch (Exception e) {
		e.printStackTrace();
	}
}

};
t.start();
```

Hat wer eine Idee?
Oder habe ich wo einen Fehler gemacht?

Vielen Dank im Vorraus


----------



## Spacerat (14. Sep 2009)

Die Werte von FloatControl sind weder Linear noch zwischen 0 und 1 (wie man eigentlich annehmen sollte. Die Einheit von FloatControl ist dB und die Minimal- bzw. Maximalwerte erhält man mit "getMinimum()" und "getMaximum()". Die Werte können in Schritten von "getPrecision()" verändert werden.


----------



## Dragonfire (14. Sep 2009)

Danke,
darauf wäre ich von alleine nicht gekommen ...


----------

