Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to play .wav files with java

Tags:

java

audio

wav

I am trying to play a *.wav file with Java. I want it to do the following:
When a button is pressed, play a short beep sound.

I have googled it, but most of the code wasn't working. Can someone give me a simple code snippet to play a .wav file?

like image 402
greenLizard Avatar asked Mar 10 '10 12:03

greenLizard


People also ask

Can Java read WAV files?

The official Java Sound Programmer Guide walks through reading and writing audio files. This article by A Greensted: Reading and Writing Wav Files in java should be helpful. The WavFile class is very useful and it can be tweaked to return the entire data array instead of buffered fragments.

Can you play sounds in Java?

Java API Support for MP3 Format. Currently, both Clip and SourceDataLine can play audio files in AIFC, AIFF, AU, SND, and WAV formats. We can check the supported audio format using AudioSystem: Type[] list = AudioSystem.


1 Answers

Finally I managed to do the following and it works fine

import java.io.File; import java.io.IOException;  import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.SourceDataLine;  public class MakeSound {      private final int BUFFER_SIZE = 128000;     private File soundFile;     private AudioInputStream audioStream;     private AudioFormat audioFormat;     private SourceDataLine sourceLine;      /**      * @param filename the name of the file that is going to be played      */     public void playSound(String filename){          String strFilename = filename;          try {             soundFile = new File(strFilename);         } catch (Exception e) {             e.printStackTrace();             System.exit(1);         }          try {             audioStream = AudioSystem.getAudioInputStream(soundFile);         } catch (Exception e){             e.printStackTrace();             System.exit(1);         }          audioFormat = audioStream.getFormat();          DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);         try {             sourceLine = (SourceDataLine) AudioSystem.getLine(info);             sourceLine.open(audioFormat);         } catch (LineUnavailableException e) {             e.printStackTrace();             System.exit(1);         } catch (Exception e) {             e.printStackTrace();             System.exit(1);         }          sourceLine.start();          int nBytesRead = 0;         byte[] abData = new byte[BUFFER_SIZE];         while (nBytesRead != -1) {             try {                 nBytesRead = audioStream.read(abData, 0, abData.length);             } catch (IOException e) {                 e.printStackTrace();             }             if (nBytesRead >= 0) {                 @SuppressWarnings("unused")                 int nBytesWritten = sourceLine.write(abData, 0, nBytesRead);             }         }          sourceLine.drain();         sourceLine.close();     } } 
like image 116
greenLizard Avatar answered Sep 21 '22 16:09

greenLizard