pyxen.Sound

Un clip audio court attaché à une Entity en tant que composant.

Les sons sont chargés entièrement en mémoire — utilisez-les pour des effets courts comme les sauts, les coups et les collectes d’objets.

Pour les concepts audio, consultez Audio.


Constructeur

Sound(filename)

Un argument positionnel requis : le nom d’un asset audio WAV dans le projet.


Paramètres

ParamètreTypeDescription
filenamestrNom de l’asset WAV

Exemple

jump_sound = Sound("jump")

Attacher un Sound

Lors du spawn :

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

Ou plus tard :

entity.sound = Sound("jump")

L’assignation d’un son lance la lecture immédiatement.


Propriétés du composant

Accès via entity.sound :

PropriétéTypeL/EDescription
loopboolL/EActiver la lecture en boucle
volumefloatL/EGain (minimum 0.0)
panfloatL/EPanoramique stéréo (-1.0 à 1.0)
timefloatR/WPosition de lecture actuelle (secondes)
delayfloatR/WSecondes de silence avant le démarrage
durationfloatLDurée totale (secondes)
finishedboolLTrue lorsque la lecture est terminée

loop

entity.sound.loop = True

Lorsqu’activé, le son redémarre automatiquement après la fin de la lecture.


volume

entity.sound.volume = 0.5

Les valeurs inférieures à 0.0 sont limitées à 0.0.


pan

entity.sound.pan = -1.0  # full left
entity.sound.pan =  1.0  # full right
entity.sound.pan =  0.0  # center

Limité à la plage -1.0 à 1.0.


time

t = entity.sound.time
entity.sound.time = 0.25     # saute le premier quart de seconde

Position de lecture en secondes. Lui affecter une valeur déplace la tête de lecture ; au-delà de la fin elle est ramenée à la fin, et déplacer un son terminé le relance.


delay

entity.sound.delay = 0.002   # démarre dans deux millisecondes

Secondes de silence avant que le son ne démarre. Contrairement à time, rien n’est sauté : le son commence bien à son premier échantillon, simplement plus tard.

C’est l’outil à utiliser quand le même effet est déclenché plusieurs fois dans une frame. Des copies d’une même forme d’onde qui démarrent sur le même échantillon s’additionnent en phase : deux copies donnent le double d’amplitude, pas 1,4 fois, et dix feront dépasser le niveau maximal quel que soit le soin apporté à chacune. Quelques millisecondes d’écart suffisent à les décorréler, et c’est bien trop court pour s’entendre comme un trou.

Un délai sépare les attaques : il est donc surtout utile pour des effets percussifs courts et ne change rien à un son tenu.


duration

d = entity.sound.duration

Lecture seule. Durée totale du son en secondes.


finished

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

Lecture seule. True lorsque le son a fini de jouer (et que loop est False).


Format

Les assets audio doivent être des fichiers WAV.


Erreurs courantes

Nom de fichier manquant

Sound()
ValueError: Sound must have a file

Asset invalide

Sound("nonexistent")

L’objet son est créé mais la lecture échouera silencieusement avec un avertissement dans les logs.