XNA: XACT (Microsoft Cross-Platform Audio Creation Tool)

octubre 10, 2009


Aun hay muchas cosas por comentar acerca de XNA y del desarrollo de Wonderwall pero si hay algo importante en el tintero es XACT. XACT es la plataforma que Microsoft a puesto a nuestro alcance con XNA para gestionar de un modo sencillo el audio y los efectos de nuestro juego.

Ahora mismo esta la versión XACT 3.0 la cual corresponde a XNA 3.1 pero tras probarla un poco lo cierto es que más que un 3.0 debería ser un 2.5. Las diferencias sin haber profundizado demasiado son mínimas con algunas mejoras pero ningún cambio sustancial ni que pueda hacer que alguien que sepa utilizar un poco XACT 2.0 (XNA 3.0) pueda utilizarlo como si se tratase del mismo. Por esta razón comentaré mínimamente las diferencias en pequeños comentarios y me centraré en como utilizar XACT en XNA.

Al contrario que con el resto de recursos que utilizamos en el juego, el sonido no debe (aunque se puede) incluir en el Content ya que deberíamos crear un pipeline que lo gestionara. Por esta razón no se añade el sonido al content sino que lo que se hace es entrar por la puerta de atras. Ahora me explico.

Cogemos todo el audio que queramos utilizar en nuestro juego y lo añadimos a la carpeta del Content pero no a través de Visual Studio sino por el explorador. Recomiendo crear en Visual Studio una carpeta en el Content llamada Audio o algo semejante para guardar ahí.

Una vez hemos copiado el audio en la carpeta del proyecto de juego a través del explorador vamos a la carpeta que esta en el inicio de Microsoft XNA Game Studio 3.x y en la carpeta Tool encontraremos las herramientas que vamos a utilizar, es decir, XACT.

Para poder utilizar todas las funcionalidades de XACT debemos antes iniciar el programa XACT Auditoring Utility o no podremos reproducir el audio. Una vez iniciado iniciamos XACT que se encuentra en la misma carpeta y se llama Microsoft Cross-Platform Audio Creator Tool (XACT).

Una vez dentro lo primero que hay que hacer para poder trabajar es crear un proyecto nuevo que pedirá un lugar donde guardarse. Una vez guardado debemos crear pulsando con el botón derecho un Wave Banks y un Sound Banks. Una vez creados recomiendo que a través del menú Window selecciones Tile Horitzontally para poder trabajar mejor.

Ahora tendremos en la parte inferior Wave Banks y arriba Sound Banks. Pulsamos con el botón derecho dentro de Wave Banks y seleccionamos insertar Wave file(s). XACT 2.0 solo trabajo con ficheros .wav pero XACT 3.0 permite trabajar también con ficheros xWMA. Es una de las pequeñas novedades que tiene XACT 3.0.

Una vez añadido los recursos audio que utilizaremos para el juego los arrastramos a Sounds Bank y pulsamos con el botón derecho en la ventana inferior de Sounds Banks y creamos una nueva Cue.

Lo importante es la Cue. La Cue es la lista de reproducción que se utilizará. Pueden haber tantas como desees y dentro de cada una puede haber tantas canciones como desees. Cuando añades varias canciones a la misma Cue estas tienen la misma probabilidad de salir. Esto es modificable pulsando sobre la canción de la Cue y cambiar el Weight al porcentaje deseado. El nombre de la Cue es importante. A través del nombre llamaremos a esa Cue para que reproduzca su contenido.

Ahora expliquemos un poco las opciones que tenemos con las canciones. Antes de añadir las canciones a la Cue podemos retocarlas pero con detalles bastante interesantes.

Por un lado esta el volumen (Volume) con el podemos augmentar o disminuir, el tono (Pich) con el que cambiarle el tono aunque también cambiará la velocidad. Y por último la prioridad (Priority). En Looping podemos hacer que una canción se repita un cierto número de veces o que se repita infinitamente.

Aunque en mi opinión el poder variar el volumen (Vol Variation), variar el tono (Pich Variation) es muy interesante para, por ejemplo, con un único sonido conseguir variaciones y tener más variedad. Y por otro lado esta el 360 Pan para aprovechar si se dispone de un equipo 5.1 con lo que podrás dirigir el sonido hacia una dirección con la primera casilla del Pan y una variación de la dirección con la segundo. Yo por ejemplo lo he utilizado para que los efectos vayan cambiando de altavoces y no sea siempre igual creando un efecto bastante interesante. Como trabajo en estéreo pongo el Pan a 90 y el ratio a 180 y va cambiado constantemente de altavoces (quitando el uso del altavoz central). Si trabajas con XACT 3.0 también hay unos pequeños filtros para modificar el sonido.

Hay más opciones como RCPs o Effects pero es profundizar un poco más adentro dentro de las posibilidades de XACT y para empezar no hay necesidad. Más adelante ya extenderé las posibilidades de XACT y siempre puedes ir probando tu.

Una vez ajustadas las canciones y añadidas a las distintas Cue guardamos y pasamos a Visual Studio C# con nuestro proyecto. Ahora, en la carpeta que habíamos creado de Audio añadimos el proyecto creado con XACT y ya tendremos todas las canciones que queríamos añadir añadidas. Por eso dije entrar por la puerta de atrás.

Ahora hay que añadir los elementos que controlarán el sonido. Estos son AudioEngine, WaveBank, SoundBank y Cue. Así que pasamos a añadir estos atributos a nuestra clase.

AudioEngine audioEngine;
WaveBank waveBank;
SoundBank soundBank;
Cue trackCue;

Ahora hay que incializar las variables.(GameAudio es el nombre del proyecto que hemos añadido en el content hecho con XACT)

audioEngine = new AudioEngine(@"Content\Audio\GameAudio.xgs");
waveBank = new WaveBank(audioEngine, @"Content\Audio\Wave Bank.xwb");
soundBank = new SoundBank(audioEngine, @"Content\Audio\Sound Bank.xsb");

Ahora solo queda añadir en el método Update el audioEngine.Update(); para que se actualice. Para que hacer sonar una canción

trackCue = soundBank.GetCue("nombredelacanción");
trackCue.play();

Para hacer sonar las canciones es recomendable hacer un método que se la pasa por parámetro un String con el nombre de la canción.

Y ya esta, ya funcionan nuestras canciones! Ahora amoldalo a tu proyecto y tendrás una de las partes más importantes de un juego realizadas. Solo recordar que solo puede haber 1 archivo XACT en un proyecto de XNA pues se crean conflictos (o eso me ha pasado a mi) de modo que se debe poner todo el contenido que deseemos en un proyecto XACT.

Anuncios

3 Responses to “XNA: XACT (Microsoft Cross-Platform Audio Creation Tool)”

  1. Sergio Says:

    tengo una pregunta
    agregue 2 canciones a un mismo cue y al momento de correr el programa suenan las 2 canciones a la vez. Sabes si puede sonar primero una cancion y luego otra y si se puede hacer de manera aleatoria
    gracias

    • jorgrallo Says:

      Hola Sergio,
      Suenan las dos al mismo tiempo? Nunca me ha sucedido nada parecido..:S Cuando agregas 2 canciones a una cue estas suenan por defecto de forma aleatoria con la misma probabilidad de salir… a no ser que lo modifiques xD

      Hace un poco de tiempo que no peleo con XACT y XNA, así que déjame que lo revise e intentaré contestarte mejor,

      Un saludo.

    • jorgrallo Says:

      Hola Segio,

      Lamento haber tardado tanto en contestarte. Decirte que solo utilizo XACT para efectos sonoros y no para la música así que Te explicaré como lo hago yo:

      Creas una lista de String con el nombre de las canciones, una variable Random para elegiraleatoriamente y una vez tienes el titulo escogido solo queda hacer play:

      public void PlayCue(String track)
      {
      trackCue = soundBank.GetCue(track);
      trackCue.Play();
      }


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: