Sound problem

Hello,

I have 3 sound files:

gunshot5.wav
javax.sound.sampled.AudioInputStream@1549f94
PCM_UNSIGNED 8000.0 Hz, 8 bit, mono, 1 bytes/frame,

bird.wav
javax.sound.sampled.AudioInputStream@175d6ab
PCM_UNSIGNED 11025.0 Hz, 8 bit, mono, 1 bytes/frame,

boom.wav
javax.sound.sampled.AudioInputStream@12940b3
PCM_SIGNED 11025.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian

The problem is, if I implement them in my game the file bird.wav can be played only once. If it should be replayed again nothing can be heared. The other two files can be replayed without any problem.
I have no idea what the problem could be. I’m using a modified sound routine I found here in the forum.

import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Vector;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class SoundMachine {

Vector clips;
Vector streams;
int counter;

public SoundMachine(){
//Vectoren als Datenspeicher
clips = new Vector();
streams = new Vector();

//Counter für Vectoren
counter = 0;

}

public int addClip(String file){
int retval = 0;

//hole URL
URL sound_url = this.getClass().getClassLoader().getResource(file);

try {
  //AudioInputStream
  AudioInputStream ais = AudioSystem.getAudioInputStream(sound_url);
  System.out.println("-------------------------");
  System.out.println(sound_url);
  System.out.println(ais);
  
  //Format ermitteln
  AudioFormat af = ais.getFormat();
  System.out.println(af);
  
  //Erst mal nur PCM-Files
  if((af.getEncoding()!=AudioFormat.Encoding.PCM_SIGNED)&&(af.getEncoding()!=AudioFormat.Encoding.PCM_UNSIGNED)){
    System.out.println("Format kann nicht abgespielt werden");
  }
  
  //Clip erzeugen und öffnen
  DataLine.Info info = new DataLine.Info(Clip.class,af,((int)ais.getFrameLength()* af.getFrameSize()));
  
  
  Clip clip = (Clip)AudioSystem.getLine(info); 
  
  clips.add(counter,clip);
  streams.add(counter,ais);
  
  retval = counter;
  counter++;
  
} catch (UnsupportedAudioFileException e) {
} catch (IOException e) {
} catch (LineUnavailableException e) { }

return retval;

}

public void play(int soundnum){
Clip clip = (Clip) clips.elementAt(soundnum);
AudioInputStream ais = (AudioInputStream) streams.elementAt(soundnum);
try {
if(!clip.isOpen()){
clip.open(ais);
}
if(clip.isRunning()){
clip.stop();
}

  clip.setFramePosition(0);
  clip.start();
  
 } catch (LineUnavailableException e) {
} catch (IOException e) {
}

}

public void loop(int soundnum){
Clip clip = (Clip) clips.elementAt(soundnum);
AudioInputStream ais = (AudioInputStream) streams.elementAt(soundnum);

try {
  clip.open(ais);
  clip.loop(Clip.LOOP_CONTINUOUSLY);
} catch (LineUnavailableException e) {
} catch (IOException e) {
}

}

public void stop(int soundnum){
Clip clip = (Clip) clips.elementAt(soundnum);
clip.stop();
}

public void stopAll(){
for(Enumeration e = clips.elements(); e.hasMoreElements();){
Clip clip = (Clip) e.nextElement();
clip.stop();
clip.close();
}

}
}

I have no idea in which direction I should investigate for the problem.