From 22b293739b733c3c843b3972eeae59862463630b Mon Sep 17 00:00:00 2001 From: Toby Davis Date: Sat, 28 Feb 2026 17:10:49 -0500 Subject: [PATCH] Enable stereo spatialization when using OpenAL Soft Relies on the AL_SOFT_source_spatialize extension. --- .../_internal/backend/native/NativeAudioSource.hx | 11 +++++++++++ src/lime/media/openal/AL.hx | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/lime/_internal/backend/native/NativeAudioSource.hx b/src/lime/_internal/backend/native/NativeAudioSource.hx index 68d97c1893..5fca75fc3b 100644 --- a/src/lime/_internal/backend/native/NativeAudioSource.hx +++ b/src/lime/_internal/backend/native/NativeAudioSource.hx @@ -28,6 +28,7 @@ class NativeAudioSource #if lime_openalsoft private static var hasDirectChannelsExt:Null; + private static var hasSourceSpatializeExt:Null; #end private var buffers:Array; @@ -150,6 +151,16 @@ class NativeAudioSource { AL.sourcei(handle, AL.DIRECT_CHANNELS_SOFT, AL.REMIX_UNMATCHED_SOFT); } + + if (hasSourceSpatializeExt == null) + { + hasSourceSpatializeExt = AL.isExtensionPresent("AL_SOFT_source_spatialize"); + } + + if (hasSourceSpatializeExt) + { + AL.sourcei(handle, AL.SOURCE_SPATIALIZE_SOFT, AL.TRUE); + } #end samples = Std.int((dataLength * 8.0) / (parent.buffer.channels * parent.buffer.bitsPerSample)); diff --git a/src/lime/media/openal/AL.hx b/src/lime/media/openal/AL.hx index 4d34f36f4c..b37add4275 100644 --- a/src/lime/media/openal/AL.hx +++ b/src/lime/media/openal/AL.hx @@ -239,6 +239,9 @@ class AL /* AL_SOFT_direct_channels_remix extension */ public static inline var DROP_UNMATCHED_SOFT:Int = 0x0001; public static inline var REMIX_UNMATCHED_SOFT:Int = 0x0002; + /* AL_SOFT_source_spatialize extension */ + public static inline var SOURCE_SPATIALIZE_SOFT:Int = 0x1214; + public static inline var AUTO_SOFT:Int = 0x0002; #end public static function removeDirectFilter(source:ALSource)