Signatur
Beschreibung
openal_source_set weist einer OpenAL-Audioquelle einen Eigenschaftswert zu. OpenAL-Quellen repräsentieren Klangerzeuger im 3D-Audioraum und besitzen zahlreiche konfigurierbare Attribute wie Position, Orientierung, Lautstärke, Pitch und Looping-Verhalten.
Der Parameter $property wird als eine der OpenAL-Konstanten übergeben, z. B. AL_POSITION, AL_VELOCITY, AL_GAIN, AL_PITCH oder AL_LOOPING. Je nach Eigenschaft muss $value ein Skalar (Float, Int, Bool) oder ein Array mit drei Floats (für Vektoren wie Position oder Geschwindigkeit) sein.
Die Funktion gehört zur PECL-Erweiterung openal und ist nur verfügbar, wenn diese kompiliert und aktiviert ist. Sie wird typischerweise in Verbindung mit openal_source_create, openal_buffer_create und openal_source_play verwendet, um vollständige 3D-Audio-Szenen aufzubauen.
Diese Funktion ist besonders nützlich in Spielen oder Simulationen, bei denen sich Klangquellen dynamisch im Raum bewegen oder ihre Eigenschaften zur Laufzeit verändert werden müssen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $source Pflicht | resource | Eine gültige OpenAL-Quellenressource, erstellt mit openal_source_create(). |
|
| $property Pflicht | int | Die zu setzende Eigenschaft als OpenAL-Konstante, z. B. AL_GAIN, AL_PITCH, AL_POSITION, AL_VELOCITY, AL_LOOPING oder AL_BUFFER. |
|
| $value Pflicht | mixed | Der zu setzende Wert. Für skalare Eigenschaften (z. B. AL_GAIN) ein float oder int, für Vektoreigenschaften (z. B. AL_POSITION) ein Array mit drei Floats [x, y, z], für AL_LOOPING ein bool. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. ungültige Ressource oder nicht unterstützte Eigenschaft).Beispiele
Lautstärke und Pitch einer Audioquelle setzen
<?php
// OpenAL-Gerät und Kontext initialisieren
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
// Quelle erstellen
$source = openal_source_create();
// Lautstärke auf 80 % setzen
openal_source_set($source, AL_GAIN, 0.8);
// Pitch leicht erhöhen
openal_source_set($source, AL_PITCH, 1.2);
echo "Lautstärke und Pitch wurden gesetzt.\n";
?>
Position einer 3D-Klangquelle und Looping aktivieren
<?php
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
$source = openal_source_create();
// Quelle im 3D-Raum positionieren (x=5, y=0, z=-3)
openal_source_set($source, AL_POSITION, [5.0, 0.0, -3.0]);
// Bewegungsgeschwindigkeit setzen
openal_source_set($source, AL_VELOCITY, [0.0, 0.0, 0.0]);
// Dauerhafte Wiedergabe (Loop) aktivieren
openal_source_set($source, AL_LOOPING, true);
// Buffer laden und der Quelle zuweisen
$buffer = openal_buffer_create();
openal_buffer_loadfile($buffer, 'sound.wav');
openal_source_set($source, AL_BUFFER, $buffer);
// Wiedergabe starten
openal_source_play($source);
echo "3D-Audioquelle konfiguriert und gestartet.\n";
?>
// Wichtig · Fallstricke
PECL-Erweiterung: openal_source_set ist Teil der PECL-Erweiterung openal, die nicht standardmäßig in PHP enthalten ist. Sie muss separat installiert und in der php.ini aktiviert werden.
Werttypen beachten: Das Übergeben eines falschen Typs für $value (z. B. ein Skalar statt eines Arrays für AL_POSITION) kann zu einem Fehler oder unerwartetem Verhalten führen. Prüfe die OpenAL-Dokumentation für den erwarteten Typ jeder Eigenschaft.
Ressourcenlebenszyklus: Stelle sicher, dass die $source-Ressource gültig und nicht bereits freigegeben wurde, bevor du Eigenschaften setzt.