pyxen.Sound

Ein kurzer Audioclip, der einem Entity als Komponente angehängt wird.

Sounds werden vollständig in den Speicher geladen — verwende sie für kurze Effekte wie Sprünge, Treffer und Einsammelgeräusche.

Audio-Konzepte findest du unter Audio.


Konstruktor

Sound(filename)

Ein erforderliches positionelles Argument: der Name eines WAV-Audio-Assets im Projekt.


Parameter

ParameterTypBeschreibung
filenamestrName des WAV-Assets

Beispiel

jump_sound = Sound("jump")

Einen Sound anhängen

Beim Spawn:

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

Oder nachträglich:

entity.sound = Sound("jump")

Das Zuweisen eines Sounds startet die Wiedergabe sofort.


Komponenteneigenschaften

Zugriff über entity.sound:

EigenschaftTypL/SBeschreibung
loopboolL/SSchleife aktivieren
volumefloatL/SLautstärke (begrenzt >= 0.0)
panfloatL/SStereo-Panning (-1.0 bis 1.0)
timefloatR/WAktuelle Wiedergabeposition (Sekunden)
delayfloatR/WSekunden Stille vor dem Start
durationfloatLGesamtlänge (Sekunden)
finishedboolLTrue wenn Wiedergabe abgeschlossen

loop

entity.sound.loop = True

Wenn aktiviert, startet der Sound nach dem Ende automatisch neu.


volume

entity.sound.volume = 0.5

Werte unter 0.0 werden auf 0.0 begrenzt.


pan

entity.sound.pan = -1.0  # ganz links
entity.sound.pan =  1.0  # ganz rechts
entity.sound.pan =  0.0  # Mitte

Begrenzt auf den Bereich -1.0 bis 1.0.


time

t = entity.sound.time
entity.sound.time = 0.25     # überspringt die erste Viertelsekunde

Die Wiedergabeposition in Sekunden. Eine Zuweisung springt an diese Stelle; Werte hinter dem Ende werden auf das Ende begrenzt, und ein beendeter Ton läuft danach wieder.


delay

entity.sound.delay = 0.002   # startet in zwei Millisekunden

Sekunden Stille, bevor der Ton startet. Anders als bei time wird nichts übersprungen — der Ton beginnt weiterhin bei seinem ersten Sample, nur später.

Das ist das Mittel der Wahl, wenn derselbe Effekt mehrfach in einem Frame ausgelöst wird. Kopien einer Wellenform, die auf demselben Sample beginnen, addieren sich phasengleich: zwei ergeben die doppelte Amplitude, nicht das 1,4-Fache, und zehn treiben jede Mischung über die Vollaussteuerung. Ein paar Millisekunden Abstand genügen, um sie zu dekorrelieren, und sind viel zu kurz, um als Lücke hörbar zu sein.

Eine Verzögerung trennt die Attacks und hilft daher vor allem bei kurzen perkussiven Effekten; bei einem gehaltenen Ton bewirkt sie nichts.


duration

d = entity.sound.duration

Nur lesbar. Gesamtlänge des Sounds in Sekunden.


finished

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

Nur lesbar. True wenn der Sound fertig abgespielt wurde (und loop False ist).


Format

Sound-Assets müssen WAV-Dateien sein.


Häufige Fehler

Fehlender Dateiname

Sound()
ValueError: Sound must have a file

Ungültiges Asset

Sound("nonexistent")

Das Sound-Objekt wird erstellt, aber die Wiedergabe schlägt stillschweigend fehl mit einer protokollierten Warnung.