Carrera de XNA – Capítulo 2 – Artículo 4
Introducción
Este artículo presenta los conceptos básicos para la reproducción de efectos de sonido durante un juego. Hay que desatacar que, a diferencia de la música de fondo, los efectos tienen propiedades particulares y deben ser usados de forma ocasional dentro del código, no pueden correr indefinidamente.
El proceso
Se define en 3 partes: Elegir o Grabar los Archivos de Audio, luego cargarlos en el juego como contenido y por último reproducirlos en el momento que sea necesario dentro del gameplay.
1 - Formatos de Archivos
En general existen dos formatos tradicionales para incluir archivos cono efectos de sonido a nuestro juego. Teniendo en cuenta las plataformas múltiples lo más recomendable es utilizar el formato WAV, aunque también podríamos usar compresión en formato MP3 sin mayores complicaciones.
Archivos WAV y PCM
El tipo de codificación PCM puede causarnos algunos problemas a la hora de reproducir nuestros efectos si no tenemos en cuenta ciertas restricciones:
- El formato debe ser PCM
- Grabado 8 o 16-bit
- Entre 8KHz y 48KHz
- Mono o Estéreo
NOTA: EL Build Action de los archivos que agreguemos dentro de nuestro proyecto de contenido siempre debe ser “Content” y utilizar “Copy if Newer” como estrategia para asegurar que tengamos la última versión en un archivo separado y podamos cargarla correctamente.
Bancos de Sonidos y XACT
En el nivel Intermedio veremos como crear a través de una herramienta de Microsoft (http://msdn.microsoft.com/en-us/library/ff827592.aspx) un archivo de Banco de Sonidos, con múltiples WAV adentro, soportado para las 3 plataformas (XBOX, Windows y Windows Phone).
La “Microsoft Cross-Platform Audio Creation Tool” sirve a su vez para convertir diversos formatos en uno 100% compatible con XNA, a través de una interfaz gráfica.
2 – Cargando el Archivo de Audio
Para agregar un efecto de sonido, debemos incluir el archivo creado en nuestro proyecto de Contenido, de la misma forma que agregamos una Imagen externa.
Botón derecho en nuestro Proyecto de Contenido. Agregar, Elemento Existente.
Elegimos el archivo y hacemos clic en Add.
3 – Reproduciendo el Efecto
Para reproducir nuestro efecto de sonido, tendremos que cargarlo previamente en memoria y luego ejecutar un método de la clase SoundEffect. En el código siguiente, utilizamos un sonido previamente cargado y solo se reproduce si la hora actual de la máquina coincide con 10 minutos (10.10AM, 11.10PM, etc.) esto es únicamente a modo de ejemplo.
Hola, estuve tratando de cargar un archivo de audio de tipo mp3, pero a la hora que ejecuto mi aplicación me sale una excepción.Como hago para cargar archivos mp3?, es de la misma forma que los archivos wav??
ResponderEliminarWilson, depende del formato del archivo. Te recomiendo utillizar la herramienta "Microsoft Cross-Platform Audio Creation Tool" para estandarizar el formato de los archivos MP3
ResponderEliminarBuenas tardes, no entendi muy bien esta parte "solo se reproduce si la hora actual de la máquina coincide con 10 minutos (10.10AM, 11.10PM, etc.) ".. esto que quiere decir a efectos practicos y como me afecta en el desarrollo de mi aplicacion..? Gracias por adelantado...
ResponderEliminarHola Luis, esto es solo un ejemplo en el cual reproducimos la musica en ese momento. En un caso práctico, podemos reproducirlo cuando choca un objeto con otro, se dispara un laser, etc.
ResponderEliminarMUY BUEN POST PERO HACE FALTA UN CODIGO PARA GUIARSE
ResponderEliminarHola, no entendí el comentario: "NOTA: EL Build Action de los archivos que agreguemos dentro de nuestro proyecto de contenido siempre debe ser “Content” y utilizar “Copy if Newer” como estrategia para asegurar que tengamos la última versión en un archivo separado y podamos cargarla correctamente." tal vez porque soy nuevo en C#, , puedes explicarme un poco más? por otro lado, tambien me surge algunas dudas entre ellas, si esto tambien se aplica en el caso de imagenes para mantenerlas sincronizadas... es asi?
ResponderEliminarsaludos
Me gustaria sabe cuando saldra el tutorial o la capasitacion intermedia de XNA? espero su respuesta grasias...
ResponderEliminarTengo una inquietud. El código funciona, pero al reproducirse el sonido parece que lo reproduce muchas veces o que el sonido fuera como muy robótico y no se escucha bien. ¿Habrá algún problema con el código o algo por el estilo?
ResponderEliminarOK, Muy Interesante...gracias
ResponderEliminar