Mini Guía para utilizar sonidos en XNA con la herramienta XACT

Añadiendo Audio a nuestros juegos con la herramienta XACT

¿Os imagináis vuestro juego favorito sin sonido? Pensad en un Metal Gear Solid o un Final Fantasy sin su banda sonora…
Está claro que no sería lo mismo, la música juega un papel fundamental a la hora de sumergir al jugador en la historia y de ponernos nerviosos o asustarnos más de una vez, yo al menos, con el Doom III me he pegado unos buenos sustos :P
Lo que os cuento aquí es una guía bastante básica de cómo usar la herramienta XACT y posteriormente su utilización con XNA. Empecemos.

Requisitos

Si ya tienes instalado tu XNA no necesitas nada más, viene por defecto al instalarse.
NOTA: Las imágenes que uso en esta mini guía pertenecen a la versión 2.0 de XACT que incluye también la versión 2.0 de XNA.

Creando un proyecto en XACT

Para crear un proyecto nos vamos al menú inicio de Windows, Todos los programas, Microsoft XNA Game Studio 2.0, Tools, Microsoft Cross-Platform Audio Creation Tool (XACT).
Una vez cargada la aplicación, se abre esta ventana por defecto:

NuevoProyecto.JPG

Nos vamos arriba al menú y hacemos click en file, New Project.

NuevoProyecto2.JPG

Nos aparece la siguiente ventana para elegir la carpeta donde guardarlo.

CONSEJO: Para evitar problemas luego, dentro de vuestro proyecto de XNA donde queráis introducir los sonidos, creamos una carpeta dentro de Content y esa será nuestra carpeta para el proyecto de XACT.
Otro consejo es que copiéis los archivos de sonido que vamos a utilizar dentro de esa carpeta que acabamos de crear.
En mi ejemplo, el proyecto XNA se llama pruebaSonidos y la carpeta Sound contiene el proyecto de XACT y los sonidos que utilizo.

Una vez hecho todo esto proseguimos.

Con nuestro proyecto ya en pantalla, vamos a crear nuestros WaveBank y SoundBank, para ello vamos al menú superior y clicamos en WaveBanks, New Wave Bank. Un nuevo wave bank aparece en el árbol de nuestro proyecto, su nombre por defecto es wave bank, podemos cambiarlo o pulsar intro para dejar el que trae. Hacemos lo mismo para el Sound Bank.

Si todo va bien en este momento tendremos dos ventanas nuevas en el centro de la aplicación, para ordenarlas mejor vamos al menú superior, click en window y elegimos tile horizontally o vertically, como más os guste, para que las agrupe bien.
Hecho todo esto, ya estamos listos para empezar a añadir nuestros archivos de audio al proyecto.
Para hacer esto hacemos click derecho sobre la ventana del wave bank de nuestro proyecto, y seleccionamos insert wave files. Si habéis seguido mi consejo deberíamos tener los archivos de sonido en la carpeta del proyecto XACT con el que estamos trabajando. Seleccionamos los archivos y listo.

CONSEJO: Os dejo un enlace con cantidad de archivos en formato .wav para usarlos en vuestros juegos: http://www.soundsnap.com
En este punto deberíamos tener algo parecido a esto:

NuevoProyecto3.JPG


Bien, ahora simplemente seleccionamos todos los archivos de la ventana del wave bank y los arrastramos hasta la ventana de sound bank justo debajo de Cue Name. La ventana se actualiza con los nuevos archivos, el resultado es el siguiente:

NuevoProyecto4.JPG

Pues si habéis llegado hasta aquí, guardamos el proyecto y listo, ya tenemos nuestros archivos preparados para usarlos en XNA.

Editando un proyecto anterior

Si a mitad del desarrollo de vuestro juego os dais cuenta que necesitáis más sonidos, simplemente abrid el proyecto de XACT que estáis usando en vuestro juego e insertad los nuevos archivos de sonido que os hacen falta. Volvéis a guarda el proyecto y todo listo.

Efecto Simple: Añadiendo la propiedad de loop a un archivo

Seguramente os interese más de una vez poner una canción de fondo y que se reproduzca continuamente, con lo que hemos visto en esta guía hasta ahora no era posible, pero conseguir ese efecto con XACT es tremendamente sencillo:
Abrimos nuestro proyecto y la ventana de Sound Bank, nuestros sonidos aparecen listados en ella, debajo de Sound Name, elegimos el sonido que queremos que este en reproducción continuamente, clicamos en él, y luego en Play Wave que aparece en la parte derecha de la ventana.
Al seleccionar Play Wave en la esquina inferior izquierda de la ventana de XACT aparecen una serie de propiedades, si os fijáis hay una sección denominada como Looping, si hacemos click en infinite justo debajo conseguiremos lo que andamos buscando ;)
Por si alguien se pierde os dejo la imagen:

NuevoProyecto5.JPG

Añadir proyecto de XACT en XNA

Os dejo el código fuente de un proyecto de ejemplo muy simple, un cuadrado se mueve por la pantalla chocando con los bordes de la misma, una canción suena de fondo y a cada choque del cuadrado también suena un ruidillo. Veamos un poco del código por aquí:

El siguiente trozo de código pertenece a la declaración de los objetos que necesitaremos, un motor de Audio, y los sound y wave banks.

        AudioEngine engine;
        SoundBank soundBank;
        WaveBank waveBank;


Este fragmento forma parte del método Initialize() , inicializamos todo lo referente al sonido, si os fijáis, el AudioEngine buscará un proyecto de XACT en la carpeta Content/Sound , siendo sonido el nombre de proyecto que utilicé en XACT. En la última línea empieza a reproducirse el clip whatever, un archivo .wav dentro de la carpeta Sound.

//Inicializamos el audio engine y los sound y wave Banks
            engine = new AudioEngine("Content\\Sound\\sonido.xgs");
            soundBank = new SoundBank(engine, "Content\\Sound\\Sound Bank.xsb");
            waveBank = new WaveBank(engine, "Content\\Sound\\Wave Bank.xwb");
            //Reproducimos Sonido
            soundBank.PlayCue("whatever");


Ya solo queda actualizar el método Update() con lo siguiente:

//Actualizamos el motor de audio.
            engine.Update();


¡Y todo listo!
Os dejo aquí el enlace al código fuente donde hay más cosillas de las que pongo aquí, intentaré hacer una nueva guía con más efectos a los clips de audio, pero de momento para iniciarse cre que está bien, cualquier comentario o sugerencia es bien recibida, un saludo!

pruebaSonidos.zip Probando Sonidos XNA GS 2.0

David Mariscal Fernández
Miembro Málaga dotNet Club.
http://aprendiendoxna.wordpress.com

Last edited Apr 18, 2008 at 5:57 PM by mariscal, version 5

Comments

No comments yet.