[openal] stereo separation issue with a stereo source

Chris Robinson chris.kcat at gmail.com
Thu Feb 5 23:09:15 EST 2015


On 02/05/2015 01:32 PM, Lubomir I. Ivanov wrote:
> after staring at alSource.c for a while and finding this thread:
> http://openal.996291.n3.nabble.com/AL-SOFT-direct-channels-td3765.html
>
> apparently each multichannel source has to set AL_DIRECT_CHANNELS_SOFT
> for the virtualization to not happen (where a slight downmix is the
> result).

You generally want to avoid using that. With headphones/HRTF, for 
instance, a stereo buffer with direct channels will not sound great 
unless the sound was authored specifically for them. The reason to use 
direct channels is to play stereo sounds that have already had a 
binaural filter applied.

Out of curiosity, what speaker setup do you have? Normal stereo output 
should not have any bleed over with stereo buffers. There should only be 
some bleed over with HRTF (which is by design, and you don't want to 
prevent normally), or surround sound (although each channel is properly 
localized to +30/-30 degrees, where the speakers would be in such setups 
anyway).

If you're using stereo speakers, check that they're not configured or 
detected as headphones by OpenAL Soft.

> ^ also i think this appears to be partially true - there is no way to
> control the stereo field of a stereo source, say a 0-100% (where 0% is
> a mono downmix) on the fly via a alSourcei() call. is that correct?
> :-)

There is the AL_EXT_STEREO_ANGLES extension 
<https://icculus.org/alextreg/wiki/AL_EXT_STEREO_ANGLES>. Although 
OpenAL Soft doesn't currently support it since the angles are supposed 
to default to +30/-30 degrees, and the lib fudges with the angles with 
stereo output to avoid bleed over (placing them at +90/-90 degrees with 
non-HRTF stereo output to align with the speakers). It definitely won't 
work with direct channels, since you can't map input channels directly 
to output channels and still pan each input channel.


More information about the openal mailing list