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"