audio solapado en java

yundi
05 de Julio del 2008
Hola a todos, estoy intentando hacer una aplicación en java similar a una batería de música, de tal modo que cuando haga click con el ratón se reproduzca un fichero de audio correspondiente a un bombo, por ejemplo.

Hasta ahí todo funciona correctamente, el problema viene cuando hago dos clicks de ratón muy seguidos, entonces solamente reproduce el fichero la primera vez, y no responde correctamente a todos los clicks de ratón que hago. ¿Cómo lo puedo solucionar?

Aquí pongo un fragmento de código por si puede ayudar en algo:

[quote]


/*Clase MouseListener: */

class MouseListener extends MouseAdapter implements MouseMotionListener{
public void mouseClicked(MouseEvent e){

if (e.getButton() == e.BUTTON1){

System.out.println("Se ha pulsado el botón 1");
Main.getSoundCache().playSound("Bombo.wav");

}
}


/*El método que usamos del Main:*/
public class Main{
private static SoundCache soundCache;

public Main(){
soundCache = new SoundCache();
[...]
}

public static SoundCache getSoundCache(){
return soundCache;
}


/*El método que usamos de la clase SoundCache:*/
public class SoundCache extends ResourceCache{

public AudioClip getAudioClip(String name){
return (AudioClip) getResource(name);
}

public void playSound(final String name){
new Thread(
new Runnable(){
public void run(){
getAudioClip(name).play();
}
}
).start();
}
}

/*Finalmente, la clase padre de la que hereda SoundCache:*/
public abstract class ResourceCache {

protected HashMap resources;

public ResourceCache(){
resources = new HashMap();
}

protected Object loadResource(String name){
URL url = null;
url = getClass().getClassLoader().getResource(name);
return loadResource(url);
}

protected abstract Object loadResource(URL url);

protected Object getResource(String name){
Object res = resources.get(name);
if(res == null){
res = loadResource("res/"+name);
resources.put(name, res);
}
return res;
}
}
[/quote]

Este mismo código me ha resultado efectivo en otras ocasiones, pero no en esta, puesto que no me reproduce 2 veces simultáneas el mismo archivo de sonido, ya que espera a que termine la primera reproducción para empezar la segunda.
¿Qué puedo hacer?

Un saludo y muchas gracias!!

Gonzalo.