Java - Varios sonidos simultáneos en java

 
Vista:

Varios sonidos simultáneos en java

Publicado por Gonza (2 intervenciones) el 05/07/2008 21:46:26
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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Varios sonidos simultáneos en java

Publicado por Himura (184 intervenciones) el 07/07/2008 18:48:00
Al reproducir los sonidos tienes que crear un hilo para que sobre ese ejecute el archivo y despues cerrarlos al terminar la ejecución.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Varios sonidos simultáneos en java

Publicado por yundi (2 intervenciones) el 07/07/2008 23:42:31
Hola Himura, y muchas gracias por tu respuesta, el hilo se crea cada vez que reproducimos un archivo de audio, el problema lo solucioné haciendo que al soltar el click del ratón se llame automáticamente a stop y pare la reproducción.

Un saludo y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar