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
| Parameter | Typ | Beschreibung |
|---|---|---|
filename | str | Name 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:
| Eigenschaft | Typ | L/S | Beschreibung |
|---|---|---|---|
loop | bool | L/S | Schleife aktivieren |
volume | float | L/S | Lautstärke (begrenzt >= 0.0) |
pan | float | L/S | Stereo-Panning (-1.0 bis 1.0) |
time | float | R/W | Aktuelle Wiedergabeposition (Sekunden) |
delay | float | R/W | Sekunden Stille vor dem Start |
duration | float | L | Gesamtlänge (Sekunden) |
finished | bool | L | True 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.