Módulo de pygame para cargar y reproducir sonidos.
Este módulo contiene clases para crear objetos Sound
y controlar
la reproducción de audio. El módulo mixer
es opcional y depende
de SDL_mixer
. Antes de usar este módulo su programa debería
verificar si el módulo pygame.mixer
está disponible.
El módulo mixer
tiene un número limitado de canales para reproducir
sonidos. Generalmente los programas le piden a pygame
que comience
a reproducir un sonido y pygame
selecciona un canal de audio
disponible de forma automática. Por defecto hay 8 canales simultáneos, aunque
los programas complejos pueden obtener un control mas preciso de
la cantidad de canales y utilizarlos.
Toda la reproducción de sonido se realiza en segundo plano (en
hilos diferentes). Cuando comienza a reproducir un objeto Sound
, esta
llamada retornará inmediatamente mientras el sonido continúa
sonando. Un objeto Sound
también se puede reproducir varias veces.
El módulo mixer
también tiene un canal de streaming que se
utiliza para reproducir música y se accede a él a través del módulo
pygame.mixer.music
.
El módulo mixer
se debe inicializar como los otros módulos de pygame, aunque
tiene algunas condiciones adicionales. La función pygame.mixer.init()
toma
varios argumentos opcionales para controlar la frecuencia de reproducción. pygame
colocará por defecto valores razonables, aunque no realizará conversión
de frecuencias, por lo tanto mixer
debería iniciarse para coincidir
con la frecuencia y calidad de los recursos de audio.
Nota: Para no tener sonidos con pequeñas demoras, utilice un tamaño de
buffer mas pequeño. El valor por defecto se ha seleccionado para reducir
la posibilidad de sonidos a rasguños (como en los discos antiguos) en
algunos equipos. Puede cambiar el valor por defecto del tamaño de buffer
llamando a la función pygame.mixer.pre_init
antes de llamar
a pygame.mixer.init
o pygame.init
. Por ejemplo:
pygame.mixer.pre_init(44100,-16,2, 1024)
Note que el valor por defecto cambió de 1024 a 3072 en pygame 1.8.
Inicializa el módulo mixer.
pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=3072): return None
Inicializar el módulo mixer para cargar y reproducir sonido. Los valores
por defecto de los argumentos se pueden reemplazar utilizando atributos
de audio específicos. El argumento size
representa cuantos bits
se usarán para cada muestra de audio. Se usarán valores de muestra con
signo si se especifica un valor negativo, en otro caso se usarán muestras
de audio sin signo.
El argumento channels
se usa para especificar cuando usar el modo
estéreo y cuando el modo mono. 1 indica mono y 2 estéreo. No
se permiten otros valores.
El argumento buffer
controla el número de muestras internas que se
usarán en el mezclador de sonido. El valor por defecto debería funcionar
en la mayoría de los casos. Este valor se puede reducir para disminuir
la latencia, aunque podría ocurrir una pérdida de calidad en el sonido. También
se puede aumentar para asegurarse que la reproducción nunca se detenga, aunque
esto impone latencia. El valor de buffer
debe ser potencia de dos.
Algunos equipos necesitan que el módulo pygame.mixer
se inicialice
después de los módulos de video. El módulo de orden superior tiene
precaución de esto automáticamente, pero no envía ningún argumento
especial la iniciar mixer
. Para resolver esto, el módulo mixer
tiene una función llamada pygame.mixer.pre_init()
para definir
los valores por defecto antes de llamar a pygame.init
Es seguro llamar a esta función mas de una vez, pero después de
haber inicializado el módulo mixer
no puede cambiar los
argumentos de reproducción sin antes llamar a pygame.mixer.init()
Define con anterioridad los argumentos de mixer.init
.
pygame.mixer.pre_init(frequency=0, size=0, channels=0, buffersize=0): return None
Cualquier argumento cambia los valores por defecto que se utilizan
cuando se llama a pygame.mixer.init()
. La mejor forma de personalizar
el módulo es llamar a esta función antes de llamar a pygame.init
.
Deshabilita el módulo mixer
.
pygame.mixer.quit(): return None
Deshabilita el módulo pygame.mixer
. Se detendrá toda la reproducción
de audio y los objetos Sound cargados podrían ser incompatibles
con el mezclador si éste se modifica luego.
Consulta si se ha inicializado el módulo mixer
.
pygame.mixer.get_init(): return (frequency, format, channels)
Esta función retorna los argumentos de reproducción si el módulo
está iniciado. Se retornará None
si el módulo no se
ha iniciado.
Detiene la reproducción de todos los canales de sonido.
pygame.mixer.stop(): return None
Detiene la reproducción de todos los canales del mezclador activos.
Detiene la reproducción de forma temporal en todos los canales de sonido.
pygame.mixer.pause(): return None
Detendrá de forma temporal todas las reproducciones en los
canales del mezclador activos. La reproducción de sonido
se puede reanudar mas tarde llamando a la función
pygame.mixer.unpause()
.
Reanuda la reproducción de audio en pausa.
pygame.mixer.unpause(): return None
Reanudará todos los canales de sonido activos luego de que estos se han puesto en pausa.
Reduce el sonido gradualmente de todos los sonidos antes de detenerlos.
pygame.mixer.fadeout(time): return None
Deducirá el volumen de todos los canales de sonidos en el tiempo
indicado por por el argumento milliseconds
. El sonido se
detendrá una vez que el volumen llegue a su menor valor.
Define el número total de canales para reproducir.
pygame.mixer.set_num_channels(count): return None
Define el número de canales disponibles para el mezclador. El valor por defecto es 8. Puede aumentar o disminuir este valor. Se reduce este valor todos los sonidos que estén sonando en los canales a eliminar se detendrán.
Obtiene el número total de canales.
pygame.mixer.get_num_channels(): return count
Retorna el número de canales para reproducir activos.
Reserva canales para que no comiencen a ser utilizados automáticamente.
pygame.mixer.set_reserved(count): return None
El módulo mixer
puede preservar cualquier número de canales para
que no se seleccionen automáticamente al reproducir Sonidos. No se detendrán
los sonidos que actualmente estén sonando en los canales reservados.
Esto permite a la aplicación reservar un número específico de canales para sonidos importantes que no deberían interrumpirse y tener garantizado un canal para reproducirse.
Encuentra un canal libre.
pygame.mixer.find_channel(force=False): return Channel
Encuentra y retorna un objeto Channel
inactivo. Si no hay canales
inactivos retornará None
. Si no hay canales inactivos y el argumento
foce
vale True
entonces encontrará el canal que tiene el
sonido que mas tiempo se a reproducido y lo retornará.
Si el módulo tiene canales reservados de la función pygame.mixer.set_reserved()
entonces esos canales no se retornarán aquí.
Consulta si algún sonido a comenzado a reproducirse.
pygame.mixer.get_busy(): return bool
Retorna True
si el módulo está reproduciendo en alguno de los
canales. Retornará False
si el mezclador está libre.