Start · Sprachen · PHP · Referenz · openal_listener_set

openal_listener_set

Funktion

Setzt eine Eigenschaft des OpenAL-Listeners (des Zuhörers im 3D-Audio-Raum).

Kategorie: misc

Signatur

openal_listener_set(int $property, mixed $value): bool

Beschreibung

openal_listener_set konfiguriert eine Eigenschaft des sogenannten Listeners in OpenAL. Der Listener repräsentiert die "Ohren" in einem 3D-Audio-Szenario – also den Standpunkt, von dem aus Klänge wahrgenommen werden. Typische Eigenschaften sind Position, Geschwindigkeit (Velocity) und Ausrichtung (Orientation).

Die Funktion ist Teil der PHP-OpenAL-Erweiterung (ext/openal), die eine Schnittstelle zur OpenAL-Bibliothek bereitstellt. Sie erlaubt es, die akustische Wahrnehmungsperspektive im Raum dynamisch anzupassen – beispielsweise bei beweglichen Kamerasichten in Spielen oder Simulationen.

Der Parameter property wird durch eine der vordefinierten OpenAL-Konstanten bestimmt (z. B. AL_POSITION, AL_VELOCITY, AL_ORIENTATION). Der übergebene Wert value muss dem jeweiligen Typ der Eigenschaft entsprechen – skalare Werte für einfache Eigenschaften, Arrays für Vektoren oder Ausrichtungsdaten.

Diese Funktion ist sinnvoll in Echtzeit-Audio-Anwendungen, in denen der Hörer im Raum bewegt wird und die räumliche Klangwiedergabe dynamisch angepasst werden soll.

Parameter

Name Typ Default Beschreibung
$property Pflicht int Eine OpenAL-Konstante, die die zu setzende Listener-Eigenschaft identifiziert. Mögliche Werte sind z. B. AL_POSITION, AL_VELOCITY, AL_GAIN oder AL_ORIENTATION.
$value Pflicht mixed Der neue Wert für die Eigenschaft. Für skalare Eigenschaften wie AL_GAIN ein float, für Vektoreigenschaften wie AL_POSITION oder AL_VELOCITY ein Array mit drei Fließkommazahlen [x, y, z]. Für AL_ORIENTATION ein Array mit sechs Werten (At-Vektor + Up-Vektor).

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Eigenschaft erfolgreich gesetzt wurde, andernfalls false (z. B. bei ungültiger Eigenschaft oder falschem Werteformat).

Beispiele

Listener-Position im 3D-Raum setzen

<?php
// OpenAL-Gerät und -Kontext initialisieren
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);

// Listener an Position (1.0, 0.0, -5.0) im 3D-Raum platzieren
$result = openal_listener_set(AL_POSITION, [1.0, 0.0, -5.0]);

if ($result) {
    echo "Listener-Position erfolgreich gesetzt.";
} else {
    echo "Fehler beim Setzen der Listener-Position.";
}
?>
Listener-Position erfolgreich gesetzt.

Listener-Lautstärke (Gain) und Ausrichtung konfigurieren

<?php
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);

// Gesamtlautstärke des Listeners auf 0.8 setzen
openal_listener_set(AL_GAIN, 0.8);

// Geschwindigkeit des Listeners setzen (für Doppler-Effekt)
openal_listener_set(AL_VELOCITY, [0.0, 0.0, 1.0]);

// Ausrichtung: At-Vektor (Blickrichtung) + Up-Vektor
// Blick entlang der negativen Z-Achse, oben entlang der Y-Achse
openal_listener_set(AL_ORIENTATION, [0.0, 0.0, -1.0, 0.0, 1.0, 0.0]);

echo "Listener vollständig konfiguriert.";
?>
Listener vollständig konfiguriert.

// Wichtig · Fallstricke

Hinweis zur Verfügbarkeit: Die OpenAL-Erweiterung ist standardmäßig nicht in PHP enthalten und muss als PECL-Paket installiert werden (pecl install openal). Sie steht nicht auf allen Plattformen zur Verfügung und wird in modernen PHP-Versionen kaum noch aktiv gepflegt.

Werteformate: Ein falsches Format für value (z. B. ein skalarer Wert statt eines Arrays für AL_POSITION) führt zu false als Rückgabe. Überprüfe stets, ob der Wert dem erwarteten Typ der jeweiligen Eigenschaft entspricht.

Kontext: Ein gültiger und aktiver OpenAL-Kontext muss mit openal_context_current gesetzt sein, bevor Listener-Eigenschaften geändert werden können.