Javaで音声ファイルを音量を制御しながら再生する方法

Java Soundで音声ファイルを再生する方法を調べたのだけど、音量を制御する方法がちょっと面倒だったので、覚え書き。
音声ファイルを再生するだけならClip#start()で良いのだけど、音量を制御するには、Clip#getContol()でFloatControl.Type.MASTER_GAINのコントロールを取得する必要がある。
取得したFloatControlに設定する値もデシベル単位なので、オリジナルの50%の音量で再生とかするのに、ちょっと面倒。対数計算が必要になる。(参考:Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle)
コードとしては、以下のようになる。

public void testPlayClip() {
	try {
		Clip clip = AudioSystem.getClip();
		AudioInputStream in = AudioSystem.getAudioInputStream(new File("test.wav"));
		clip.open(in);
		FloatControl control = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
		controlByLinearScalar(control, 0.5); // 50%の音量で再生する
		clip.start();
	} catch (Exception e) {
		e.printStackTrace();
	}
}

private void controlByLinearScalar(FloatControl control, double linearScalar) {
	control.setValue((float)Math.log10(linearScalar) * 20);
}