AudioTest.java

The following code is configured to bring up a blank JFrame, which the user can close after the sound clip has played. You may choose to put in a waiting time instead, by changing the main program to

	AudioTest inst = new AudioTest(false);
 	inst.test(filename);
	inst.sleep(3500);
If the wait time is too short the program will exit before the end of the sound clip.

There also seems to be a problem with .au files. Java throws a javax.sound.sampled.LineUnavailableException for format

ULAW 8000.0 Hz, 8 bit, mono, 1 bytes/frame.

You can use a code converter such as AUD-to-WAV to convert .au files to .wav format.


AudioTest.java

import javax.swing.*;
import javax.sound.sampled.*;
import java.io.*;
import java.net.URL;


public class AudioTest extends JFrame
{

   AudioTest(boolean app) 
   {
	if (app) {
      		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      		setTitle("Test Sound Clip");
      		setSize(300, 200);
      		setVisible(true);
	}

   }
   public void test(String filename)
	{
      try{
          URL url = getClass().getClassLoader().getResource(filename);
         AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
	AudioFormat audioFormat = audioIn.getFormat();
	System.out.println(audioFormat);
         // Get a sound clip resource.
         Clip clip = AudioSystem.getClip();
         // Open audio clip and load samples from the audio input stream.
         clip.open(audioIn);
         clip.start();
        }catch(Exception e)
        {
        System.err.println(e);
        }
}

    public void sleep(int millisec) {
	try {
		Thread.sleep(millisec);
	}
	catch(Exception e) {
		System.out.println(e);
	}
    }

    public static void main(String[] args)
   {
	String filename = "welcome.wav";
	if (args.length>0) filename = args[0];
	AudioTest inst = new AudioTest(true);
 	inst.test(filename);
	//inst.sleep(3500);



   }
}


Maintained by John Loomis, updated Thu Apr 06 15:48:14 2017