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ámetro | Tipo | Descripción |
|---|---|---|
filename | str | Nombre 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:
| Propiedad | Tipo | L/E | Descripción |
|---|---|---|---|
loop | bool | L/E | Activar bucle |
volume | float | L/E | Ganancia (limitada >= 0.0) |
pan | float | L/E | Paneo estéreo (-1.0 a 1.0) |
time | float | R/W | Posición de reproducción actual (segundos) |
delay | float | R/W | Segundos de silencio antes de empezar |
duration | float | L | Duración total (segundos) |
finished | bool | L | True 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.