// License: GPL. Copyright 2009 by David Earl and others
package org.openstreetmap.josm.tools;
import java.io.File;
import java.net.URL;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import org.openstreetmap.josm.Main;
/**
* Returns calibrated length of recording in seconds.
*
* @author David Earl <david@frankieandshadow.com>
*
*/
public class AudioUtil {
static public double getCalibratedDuration(File wavFile) {
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(
new URL("file:".concat(wavFile.getAbsolutePath())));
AudioFormat audioFormat = audioInputStream.getFormat();
long filesize = wavFile.length();
double bytesPerSecond = audioFormat.getFrameRate() /* frames per second */
* audioFormat.getFrameSize() /* bytes per frame */;
double naturalLength = filesize / bytesPerSecond;
audioInputStream.close();
double calibration = Main.pref.getDouble("audio.calibration", "1.0" /* default, ratio */);
return naturalLength / calibration;
} catch (Exception e) {
return 0.0;
}
}
}