[Openal-devel] new panning algorithm

Joss Sanglier joss at wurmonline.com
Sun Jan 25 12:04:44 PST 2009


I am resending this as looking at another post, this may not have gone 
through a few days ago - sorry!

Not sure if this is any help in working out what your final effect 
should achieve:

http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/44_SuroundMixing.pdf

This is the manual for one of the pro dolby studio units. It discusses 
true speaker placement as well as use.

One of the problems in games I have noticed from a sound engineers 
perspective is  that there is often little or no allowance for the 
narrowing of the front stereo image that is inherent in LCRSS 
configurations. I think this comes sometimes from a misunderstanding of 
the role of the centre speaker in cinema and the possible misuse of it 
when sitting at a computer.

In theory, in a cinema, if everyone in the audience could sit in the 
precise middle of the screen, then there would be no need for a centre 
speaker, as the combined left and right pairing would give the correct 
balance. However, sitting left or right means that the voice would be 
imbalanced. So a centre channel is added to a dedicated speaker to fix 
the voice to the centre of the screen.

The down side of this is that because a stereo sound (music for 
instance) also contains a lot of mono L+R information, this will also 
use this channel and result in a narrowing of the stereo field. 
Consequently, we often produced stereo tracks that were "wider" than 
would be mixed for normal stereo to compensate, or occasionally add a 
very small delay to the right channel (not good on music).

The other problem with games, (and I think this is especially affecting 
MMOs now) is panning through centre which is a little too fast. In real 
life, though we may turn our head slightly from left to right when 
talking to someone, we perceive the sound as still being in front of us 
until we move our head to either the extreme left or right. This is 
something that the brain sorts out for us in some way. However, with the 
artificial movement of sound created in a surround field in respect to 
an avatar the brain does not have the same information as it would in a 
real life situation and does not do this. In consequence the sound seems 
to move very quickly from centre to left or right. I would be interested 
to hear what would happen if the sound moved slightly too slowly from 
centre to, say, left and then caught up as it moved round the pan.

This is not a problem we have in cinema since we are mostly showing a 
static image and the audience can move their heads in the normal way and 
get the normal live feel.

There is another problem in games which is the binaural or dummy-head 
effect (or lack of it). Sounds behind your avatar should be duller than 
the sounds ahead. There is an argument that says that since the two main 
SS speakers are placed behind the listener then this real life 
positioning should do the job. However, since it is common for the rear 
speakers to be not directly behind but very nearly to the side of the 
listener then I am not convinced this is happening appropriately.  It 
was actually easier with the older true dolby stereo (LCRS). With only 
one mono surround channel (even if split over several speakers) the 
sound was naturally duller. But with a true stereo pair, the sound is 
normally as fresh sounding as the front speakers. I am not sure anything 
really could, or should be done in that situation during the mix as we 
have no knowledge of the users speaker set up (and the better quality it 
is, the worse it often sounds. Spending a fortune on a system is a waste 
in most domestic environment - smaller is actually probably better and 
more accurate).

However, it would be interesting if a switch could be added to the 
output of the mix that perhaps is called something like "enhanced 
binaural positioning" where is reduces the bandwidth of the SS tracks 
and changed the way the front panning worked. Something like that.

Anyway - it was the manual that was the important bit! Sorry!


Joss

Christian Borss wrote:
> Am 18. Jan. 2009 um 18:05 Uhr schrieb Chris Robinson:
>
>   
>> The center channel isn't used in spatial calculations because it's a bit 
>> ambiguous as to where it should be. The absolute center? Or between the front 
>> speakers?
>>     
>
> The center speaker is typically placed between the front speakers as
> recommended by "ITU-R BS.775":
>
>   http://en.wikipedia.org/wiki/Surround_sound#5.1_Channel_Surround_.283-2_Stereo.29_.28digital_discrete:_Dolby_Digital.2C_DTS.2C_SDDS.29
>   http://www.sengpielaudio.com/Surround-ITU-Wiedergabe.pdf
>
> The second web site contains documents for German "Tonmeister" (sound
> engineers).
>
>   
>> Often times in movies, the center speaker is left out for sound 
>> effects and used specifically as a voice track and/or some "special"
>> sounds to draw the viewer's attention to.
>>     
>
> I think, a rocket fired by an opponent in the front in a computer game
> should definitely draw the gamers attention to the front. :-)
>
>   
>> For 7.1 surround-sound setups, it should use 6 speakers (2 front, 2 side, 2 
>> rear).
>>     
>
> The center speaker was introduced to improve the localization in the
> frontal region. So, why not make use of it?
>
> I saw in the source code that you use this arrangement for 6.1 surround
> setups. Thats why I used the front/side/rear-back speaker setup also in
> my code. But normaly I would expect a
>
>   1 center
>   2 front
>   2 side
>   1 rear-back
>
> speaker arrangement:
>
>   http://en.wikipedia.org/wiki/Surround_sound#6.1_Channel_Surround_.28digital_discrete:_DTS-ES.29
>
> Would you agree to change the configuration to a DTS-ES arrangement?
>
>   
>> A quick test showed it seem to work well.
>>     
>
> Great.
>
>   
>> I have question, though.. with this:
>>
>> pos = round(QUADRANT_NUM * aluFabs(im) / (aluFabs(re) + aluFabs(im)));
>>
>> what is supposed to happen if re and im are 0? Since they're the -Z and X 
>> coords, this is quite possible for head-relative sources that are left at 
>> 0,0,0, and given the code, it would cause a 0/0 which wouldn't be very good.
>>     
>
> In this case, DirGain is set to zero
>
>   DirGain = aluSqrt(Position[0] * Position[0] + Position[2] * Position[2]);
>
> and AmbientGain is set to MaxAmbientGain:
>
>   AmbientGain = MaxAmbientGain * (1.0 - DirGain);
>
> Thus, there is no directional sound and the sound is played back over
> all speakers instead. In ioquake3 you can hear this effect, e.g., when
> you fire your own weapons.
>
> But you are right, it would be a more clean implementation to avoid a
> division by zero.
>
>
> Ciao,
> Christian
>
> P.S.: For those of you who will attend it: See you at the 35th
>       international AES convention "Audio for Games" in London!
>   

-- 

 

------------------------------------------------------------------------

*Wurm Online*

/The truly original and independent MMO from OneTooFree AB/

 

*Official Website:* *http://www.wurmonline.com*

For press and other information please email press at wurmonline.com


This e-mail contains information which may be legally privileged, 
proprietary in nature, or otherwise protected by law from disclosure, 
and is intended only for the use of the Addressee(s) named above for 
their private information or for use as a press release if marked as 
such. If you are not the intended recipient, you are hereby notified 
that any dissemination or copying of this e-mail may be strictly 
prohibited. If you have received the e-mail in error, please immediately 
notify by e-mail press at wurmonline.com and forward the original e-mail.



More information about the Openal-devel mailing list