pyxen.Sound

Un clip de audio corto adjunto a un Entity como componente.

Los sonidos se cargan completamente en memoria — úsalos para efectos cortos como saltos, golpes y recolecciones.

Para conceptos de audio, consulta Audio.


Constructor

Sound(filename)

Un argumento posicional requerido: el nombre de un recurso de audio WAV en el proyecto.


Parámetros

ParámetroTipoDescripción
filenamestrNombre del recurso WAV

Ejemplo

jump_sound = Sound("jump")

Adjuntar un Sound

Durante spawn:

sfx = world.spawn(sound=Sound("jump"))

O después:

entity.sound = Sound("jump")

Asignar un sonido inicia la reproducción inmediatamente.


Propiedades del componente

Acceso mediante entity.sound:

PropiedadTipoL/EDescripción
loopboolL/EActivar bucle
volumefloatL/EGanancia (limitada >= 0.0)
panfloatL/EPaneo estéreo (-1.0 a 1.0)
timefloatR/WPosición de reproducción actual (segundos)
delayfloatR/WSegundos de silencio antes de empezar
durationfloatLDuración total (segundos)
finishedboolLTrue cuando la reproducción ha terminado

loop

entity.sound.loop = True

Cuando está activado, el sonido se reinicia automáticamente al terminar.


volume

entity.sound.volume = 0.5

Los valores por debajo de 0.0 se limitan a 0.0.


pan

entity.sound.pan = -1.0  # totalmente a la izquierda
entity.sound.pan =  1.0  # totalmente a la derecha
entity.sound.pan =  0.0  # centro

Limitado al rango -1.0 a 1.0.


time

t = entity.sound.time
entity.sound.time = 0.25     # salta el primer cuarto de segundo

La posición de reproducción en segundos. Asignarle un valor busca esa posición; más allá del final se limita al final, y buscar en un sonido terminado vuelve a reproducirlo.


delay

entity.sound.delay = 0.002   # empieza dentro de dos milisegundos

Segundos de silencio antes de que el sonido empiece. A diferencia de time, no se salta nada: el sonido sigue empezando en su primera muestra, solo que más tarde.

Es lo que hay que usar cuando el mismo efecto se dispara varias veces en un fotograma. Las copias de una misma onda que empiezan en la misma muestra se suman en fase: dos dan el doble de amplitud, no 1,4 veces, y diez llevarán la mezcla más allá de la escala completa por mucho cuidado que se haya puesto en cada una. Unos pocos milisegundos de separación bastan para descorrelacionarlas, y son demasiado poco para oírse como un hueco.

Un retardo separa los ataques, así que ayuda sobre todo con efectos percusivos cortos y no hace nada con un tono sostenido.


duration

d = entity.sound.duration

Solo lectura. Duración total del sonido en segundos.


finished

if entity.sound.finished:
    world.destroy(entity)

Solo lectura. True cuando el sonido ha terminado de reproducirse (y loop es False).


Formato

Los recursos de sonido deben ser archivos WAV.


Errores comunes

Nombre de archivo faltante

Sound()
ValueError: Sound must have a file

Recurso inválido

Sound("nonexistent")

El objeto de sonido se crea pero la reproducción fallará silenciosamente con una advertencia registrada.