package chess.view.audio; import java.io.BufferedInputStream; import java.io.InputStream; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; public class AudioPlayer { public static void playSound(InputStream audio) { new Thread(new Runnable() { // The wrapper thread is unnecessary, unless it blocks on the // Clip finishing; see comments. public void run() { try { Clip clip = AudioSystem.getClip(); BufferedInputStream bufferedInputStream = new BufferedInputStream(audio); AudioInputStream inputStream = AudioSystem.getAudioInputStream(bufferedInputStream); clip.open(inputStream); clip.start(); } catch (Exception e) { System.err.println(e.getMessage()); } } }).start(); } private static AudioInputStream convertToPCM(AudioInputStream audioInputStream) { AudioFormat m_format = audioInputStream.getFormat(); if ((m_format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) && (m_format.getEncoding() != AudioFormat.Encoding.PCM_UNSIGNED)) { AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, m_format.getSampleRate(), 16, m_format.getChannels(), m_format.getChannels() * 2, m_format.getSampleRate(), m_format.isBigEndian()); audioInputStream = AudioSystem.getAudioInputStream(targetFormat, audioInputStream); } return audioInputStream; } }