Simple to use sound in Java games

I’m just an amateur games writer but I’d like to know an easy to use way of playing sound in games. I’m looking for something that’s:

  • easy of use (most important)
  • good performance (important)
  • the ability to play mp3’s (preferably)
  • volume control (preferably)
  • left right control (a nice to have).

When running my current game on a low performance laptop (haswell 2955U, 2GB, no GPU) I find the game itself play fine but the sound is all over the place and eventually seems to turn off. I’m not sure whether this is a caching thing (currently use wav’s sized between 20k and 100k) or whether it’s just too much processing to play the sound as well as the game.

I run the game as a jar and my existing sound code is a bit like this:

SoundEffect.SHOOT.play();

enum SoundEffect {
		ALIEN_HIT("alien_hit"),
                ....
		SHOOT("machine_gun");

	// Each sound effect has its own clip, loaded with its own sound file.
	private Clip clip;
	private String name;
	private long timeLastSound = System.currentTimeMillis();

	// Constructor to construct each element of the enum with its own sound file.
	SoundEffect(String file) {
		try {   
			// play sound
			name = file;
			AudioInputStream inputStream = AudioSystem.getAudioInputStream(this.getClass().getResource(file+".wav"));
			AudioFormat format = inputStream.getFormat();
			DataLine.Info info = new DataLine.Info(Clip.class, format);
			clip = (Clip)AudioSystem.getLine(info);
			clip.open(inputStream);

		} catch (UnsupportedAudioFileException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (LineUnavailableException e) {
			e.printStackTrace();
		}
	}

	public void stop() {
		if (clip.isRunning()) { clip.stop(); }
	}

	// Play or Re-play the sound effect from the beginning, by rewinding.
	public void play() {
		timeLastSound = System.currentTimeMillis();

		// Stop the player if it is still running
		if (clip.isRunning()) { clip.stop(); }

		// play
		clip.setFramePosition(0); // rewind to the beginning
		clip.start();     // Start playing
	}

	static void init() {
		values();
	}
}

Suggestions for a simple to use method of making sounds or how to speed up what I have? would switching to mp3’s help or would I just be trading file size for processing required?

Many thanks

Mike