Audio: Sonidos y Música

Nota: Ten en cuenta que el módulo de audio puede estar deshabilidado desde las preferencias de pilas-engine. Mirá el final de esta sección si te da problemas reproducir audio.

Los sonidos se pueden cargar usando el módulo sonidos de la siguiente manera:

sonido_de_explosion = pilas.sonidos.cargar('explosion.wav')

donde explosion.wav es el nombre del archivo de audio.

Ten en cuenta que esta función para cargar sonidos se comporta muy parecido a la función que nos permite cargar imágenes o grillas. El archivo se buscará en el directorio principal de nuestro juego, luego en el directorio data y por último en la biblioteca de sonidos que trae pilas.

Reproducir sonidos

La función sonidos.cargar nos retorna un objeto de tipo Sonido que tiene un método para reproducirse llamado reproducir().

Entonces, para reproducir un sonido solamente tienes que llamar al método reproducir:

sonido_de_explosion.reproducir()

Si deseas que un sonido se repita indefinidamente debes utilizar el parámetro repetir=True. Por ejemplo:

sonido_de_explosion.reproducir(repetir=True)

Para detener el efecto de sonido, existe el método detener. Por ejemplo:

sonido_de_explosion.detener()

Y a partir de la versión 1.4.8 de pilas-engine también se puede detener el audio reduciendo el volúmen gradualmente (también conocido como fadeout):

sonido_de_explosion.detener_gradualmente(segundos=4)

Reproducir canciones largas y música de fondo

Como indicamos al principio de esta página, utilizar músicas o sonidos en pilas es muy similar, solamente tenemos que utilizar pilas.musica en lugar de pilas.sonidos.

Lo interesante de distinguir entre músicas y sonidos es que los sonidos se cargan en memoria inmediatamente, porque queremos que suenen rápido, mientras que la música se va cargando en memoria a medida que se va reproduciendo (también conocido como streaming) porque generalmente son archivos grandes y de larga duración.

Entonces, para cargar y poner a sonar una canción podríamos usar algo así:

cancion_de_fondo = pilas.musica.cargar('musica_de_presentacion.mp3')
cancion_de_fondo.reproducir()

Luego, para detenerla, podemos llamar directamente a cancion.detener(), o usar un efecto de volúmen gradual para detenerla así:

cancion_de_fondo.detener_gradualmente(3)

Donde el argumento 3 es la cantidad de segundos que utilizará pilas para bajar el volúmen gradualmente.

¿Audio deshabilitado o habilitado?

A partir de la versión 1.4.8 el sistema de audio está habilitado casi siempre, y no debería dar problemas de ningún tipo.

Pero en versiones anteriores a la 1.4.8 el audio venía deshabilitado por omisión, y tenía que ser habilitado por el usuario. Para corroborar que el audio está habilitado en tu sistema tendrías que ingresar en la sección preferencias y luego tildar la siguiente opción:

De hecho, si estás realizando un juego y querés asegurarte de que el audio esté habilitado siempre, podrías incluir estas lineas justo después de la llamada a pilas = pilasengine.iniciar():

try:
  pilas.forzar_habilitacion_de_audio()
except AttributeError:
  print "Omitiendo forzar la inicializacion, version anterior a 1.4.8"