sonidos en java.

xmariachi
30 de Mayo del 2009
CĂłmo poder hacer sonidos en java?
en una aplicacion normal, es decir, no es un applet por lo que no puedo usar el metodo:

Applet.play(URL url);

¿Alguien sabe como puede hacerse?
Muchas gracias!

Pelly
30 de Mayo del 2009
Has mirado el nuevo tutorial de Sun sobre JMF
( Java Media Framework), creo que lei algo alli

Pelly
30 de Mayo del 2009
Ahora sin manos( sin JMF) !!!

import java.applet.*;
AudioClip ac = getAudioClip(getCodeBase(),
"/paquito el chocolatero.wav");
// lo que no se es que archivos soportava y
// cuales no...

ac.play(); // tocamos algo
ac.stop(); // lo para
ac.loop(); // y vuelta a empezar


Aleister
30 de Mayo del 2009
Les recomiendo una hojeada al tutorial oficial de java.

Existe un método estático en la clase Applet (desde 1.2): Applet.newAudioClip(URL url). Te devuelve un AudioClip listo para "tocar" desde un JFrame.

Saludos.

Aleister
30 de Mayo del 2009
Me equivoque, listo para tocar desde donde sea.

JoseAtonio
30 de Mayo del 2009
los datos que e leido son muy buenos pero porfavor alguien que de una solucion que reproduc. un sonido sin applest.

Aleister
30 de Mayo del 2009
No te entiendo, no se instancia en ningún momento una Applet; ya que como escribí, el método newAudioClip(URL url) es estático. Te dejo este ejemplo:

import java.applet.*;
import java.net.*;

public class Tester {
public static URL getURL(String path) {
URL url = null;

try {
url = new URL("file:///" + System.getProperty("user.dir") + path);
}catch (MalformedURLException e) {
e.printStackTrace();
}

return url;
}

public static void main(String path[]) {
AudioClip clip = Applet.newAudioClip(getURL("/efect_sound/ex_1.wav"));
clip.play();
}
}

Si revisas el código fuente, encontrarás lo siguiente:

return new sun.applet.AppletAudioClip(url);

Sin Applets.

Saludos.


Fhernanda
30 de Mayo del 2009
Otra manera es con el metodo getAudioClip, este recibe los mismos argumentos que el metodo play, unicamente que este metodo getAudioClip devuelve una referencia a un AudioClip. Una vez cargado un Audioclip, se pueden invocar tres metodos para el objeto: play, loop (ciclar) y stop. El metodo play reproduce el audio una vez. El metodo loop repite continuamente el clip. El metodo stop termina el clip de audio. Por ejemplo:

sonido = getAudioClip(getDocumentBase(), "hola.au");

tienes que declarar la variable sonido como un AudioClip:
private AudioClip sonido;

solo tienes que mandar llamar a cualquiera de los tres metodos de getAudioClip segun la accion que quieras realizar.

Abraham Lopez C
30 de Mayo del 2009
ya hay algunas respuestas, asi que voy a poner un ejemplo de un applet

public class LoadAudioPlay extends Applet{
private AudioClip sound;
private Button playSound, loopSound, stopSound;

public void init()
{
sound = getAudioClip(getDocumentBase(),”nomArchivo.au”);
playSound=new Button(“Play”);
loopSound=new Button(“Ciclo”);
stopSound=new Button(“Alto”);
add(playSound);
add(loopSound);
add(stopSound);
}
public Boolean action (Event e, Object o)
{
if (e.target==playSound)
sound.play();
else if (e.target==loopSound)
sound.loop();
else if(e.target==stopSound)
sound.stop();
return true;
}

}

importante solo puedes usar archivos .au
playSound(); lo toca una vez
stopSound(); es para hacer alto
loopSound(); es como un ciclo, termina y vuelve a empezar

alc
30 de Mayo del 2009
playSound(); es algo que esta mal, solo debe ser play();, stop();, loop();

trogle
30 de Mayo del 2009
pues no lo se, quizas si puedes usar ese metodo de applet creando una clase applet q no se vea... es muy cutre, pero, y si funciona?
yo no se si se puede...
Chao

Aleister
30 de Mayo del 2009
Pueden revisar el paquete javax.sound.sampled, aunque es mucho más complejo.