Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta
>

Audio

 

Archivos necesarios:

En este trial veremos como añadir sonido. Añadir sonido a las aplicaciones es muy sencillo y mejora mucho la presentación de nuestras aplicaciones además de que nos permite interactuar con los usuarios de una manera más intuitiva ya que podemos añadir sonidos para cuando apretamos un botón, para cuando salimos de la aplicación, cuando está cargando una forma, etc.

El primer archivo es la clase de ejemplo para el manejo de audio. El segundo archivo es un pequeño archivo de audio que utiliza la clase. El archivo de audio tiene que estar puesto en el mismo directorio que la clase que se genera al compilar. (JCreator y muchos otros programas crean un nuevo directorio con el archivo .class en el directorio que está el .java, es decir que si el archivo que creamos lo pusimos en mis documentos se debe crear una carpeta llamada "Classes" donde esté el archivo .class y ahí tenemos que poner el archivo de audio).

Main.java
Main.java

Audio
tada.wav

 

¿Cómo añadir sonido?

Añadir sonido es muy sencillo. Primero tenemos que importar la biblioteca java.applet.* y después debemos crear un objeto AudioClip con el que podremos reproducir el audio de varias maneras distintas. Una vez que ya creamos el objeto tipo AudioClip debemos de utilizar el método newAudioClip de la clase JApplet como se ve en la foto. La parte que dice Main.class.getResource nos sirve para abrir archivos que se encuentran en el mismo directorio que la clase donde Main es el nombre de la clase (si tuvieramos una clase Programa tendría que ser Programa.class.getResource).

Recuerda que Java no puede utilizar sonidos a menos que estén en formato wav, esto quiere decir que si queremos utilizar un mp3 que tenemos en nuestra computadora hay que decodificarlo primero. Uno de los muchísimos programas que pueden utilizar para lograr esto en Windows es RazorLAME (software libre) que utiliza un codificador muy conocido llamado LAME.

Para decodificar la música que tenemos en formato mp3 en Windows podemos correr RazorLAME. Al correr RazorLAME aparece la pantalla de la izquierda en la que podemos agregar diferentes archivos de música mp3 para convertirlos todos a wav. Lo primero que hay que hacer es agregar archivos ya sea mediante el botón add o arrastrandolos desde el explorador de Windows.
Una vez que hayamos agregado la música que queramos convertir debemos presionar el botón Decode, en caso de que no tengamos LAME instalado nos va a decir que no puede encontrar el ejecutable, por lo que tenemos que bajarlo de internet en esta página.

Para decodificar utilizando LAME (para Linux o Mac) sin ayuda de RazorLAME debemos correr LAME utilizando el comando

lame --decode

Una vez que ya convertimos el sonido a wav tenemos que cargarlo en Java para poder escucharlo dentro de nuestras aplicaciones. Dentro de Java existe la clase Clip que nos permite guadar un sonido en memoria para poder reproducirlo, la clase Clip no tiene un constructor por lo que después de declararlo tenemos que utilizar el método getClip() de la clase AudioSystem que incluye mucha funcionalidad que nos va a servir para reproducir sondios.

Una vez que tenemos nuestro Clip debemos utilizar el método open para poder abrir un archivo de sonido. El método open() recibe un AudioInputStream que podemos crear mediante el método getAudioInputStream() de la clase AudioSystem. Este método a su vez recibe un objeto de la clase URL con la dirección del sonido. Recuerda que podemos utilizar el método getResource() de la clase que estamos utilizando (en el ejemplo la clase se llama Main, pero si tu clase principal se llama Principal el método se invocaría mediante Principal.class.getResource())

Una vez creado el Clip podemos utilizarlo a lo largo de la aplicación con sus métodos start(), stop() y loop(). El método loop recibe int con el número de veces que queremos que se repita el sonido, pero hay veces (por ejemplo cuando queremos poner música de fondo) en que no queremos que se detenga, para estos casos podemos pasarle como parámetro Clip.LOOP_FOREVER
Es importante saber que Java solamente puede manejar sonidos en formato wav y formato au. Debido a la baja calidad del formato au se recomienda que se utilice formato wav a pesar de los grandes tamaños de archivo.

RegresarRegresar

 
Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta