SN3D and N3D ... revisit

139 views
Skip to first unread message

e deleflie

unread,
Apr 23, 2009, 8:27:14 PM4/23/09
to ambis...@googlegroups.com
... and I was just going to post the Universal Ambisonic spec to
sursound today :p

Aaron and Richard L .... can I ask you guys to chime in?

My main query about SN3D is that its principle advantage (of allowing
FOA monitoring) will only save you in very specific circumstances ...
which is when positioning a single point source in the axis of one of
the higher order components. Is this not right?

Dave and Oliver ... can you counter point that? ... what other core
advantages does SN3D have other than this?

N3D (so I'm told) ... has greater dynamic range (irrespective of
headroom). Its orthonormal, so 3D manipulations will be easier (I dont
know if decoder design will be easier). And it is better known, in the
literature.

An other large consideration is from a strategic point of view: I'd
like Universal Ambisonic to be close to whatever academic standard is
established. This is to allow a workflow where, when an academic
researcher decides to 'publish' their work, all they need to do is
translate it to Universal Ambisonic, and they will know that lots of
people will be able to access it. I think a lot of the best content is
going to come from universities (at least in the early years).

I'm assuming that N3D will be the academic standard ... do you think
this is wrong?

Etienne

Oliver Thuns

unread,
Apr 24, 2009, 3:57:01 AM4/24/09
to ambis...@googlegroups.com
I'm still not convinced that greater dynamic range is that important
(and it's even not the case for all content). What does the great
dynamic range help you, if you missing the clipping in some HOA
components and delivering content, that is just damaged after
conversion to 24bit flac? I do think W or WXYZ-only metering is very
important. I studied Media Art and Design and there were lots of
creative people using all kinds of technology, even if they don't
understand how it works internally. What can go wrong, will go wrong
at some point. Universal Ambisonic is about making it easier for
people to use Ambisonics. SN3D has better usability than N3D. Of
course this all will change when we have this great tools made for
Ambisonics, that abstracts it all away in the future. But I don't want
to wait another 5 to X years. I used Ambisonics 7 years ago for the
first time and not so much has improved since then.

Dave Malham

unread,
Apr 24, 2009, 5:49:04 AM4/24/09
to ambis...@googlegroups.com


On 24/04/2009 08:57, Oliver Thuns wrote:
> I'm still not convinced that greater dynamic range is that important
> (and it's even not the case for all content). What does the great
> dynamic range help you, if you missing the clipping in some HOA
> components and delivering content, that is just damaged after
> conversion to 24bit flac? I do think W or WXYZ-only metering is very
> important. I studied Media Art and Design and there were lots of
> creative people using all kinds of technology, even if they don't
> understand how it works internally. What can go wrong, will go wrong
> at some point. Universal Ambisonic is about making it easier for
> people to use Ambisonics. SN3D has better usability than N3D. Of
> course this all will change when we have this great tools made for
> Ambisonics, that abstracts it all away in the future. But I don't want
> to wait another 5 to X years. I used Ambisonics 7 years ago for the
> first time and not so much has improved since then.
>
My point exactly, SN3D(xW) has much greater usability when signals are
(potentially) exposed to the user who _will_ do something daft at some
point, especially if signal levels are all over the place. Not
withstanding what Dennis Smalley says (and I have known, _and
respected_, Dennis for more than three decades), people _will_ pan
single or small numbers of sources of sound around. Denis's approach to
composition is not the only one and in any case does not cover things
like installations, sound sculpture museum exhibits or many other things.

I see no problem with using N3D internally, and I do, since it is
trivial to wrap conversion factors for exposed SN3DxW to N3D internal
signals into any multiplication that needs to be done - and if there is
none on a particular component, it can just be passed through. So there
is little performance impact by using SN3DxW outside and N3D inside -
in some cases none. On the other hand, there are serious risks
(something that might go wrong like overloads) and issues (something
that is a problem like metering) with using N3D both inside and out.

Dave


> On Fri, Apr 24, 2009 at 2:27 AM, e deleflie <edel...@gmail.com> wrote:
>
>> ... and I was just going to post the Universal Ambisonic spec to
>> sursound today :p
>>
>> Aaron and Richard L .... can I ask you guys to chime in?
>>
>> My main query about SN3D is that its principle advantage (of allowing
>> FOA monitoring) will only save you in very specific circumstances ...
>> which is when positioning a single point source in the axis of one of
>> the higher order components. Is this not right?
>>
>> Dave and Oliver ... can you counter point that? ... what other core
>> advantages does SN3D have other than this?
>>
>> N3D (so I'm told) ... has greater dynamic range (irrespective of
>> headroom). Its orthonormal, so 3D manipulations will be easier (I dont
>> know if decoder design will be easier). And it is better known, in the
>> literature.
>>
>> An other large consideration is from a strategic point of view: I'd
>> like Universal Ambisonic to be close to whatever academic standard is
>> established. This is to allow a workflow where, when an academic
>> researcher decides to 'publish' their work, all they need to do is
>> translate it to Universal Ambisonic, and they will know that lots of
>> people will be able to access it. I think a lot of the best content is
>> going to come from universities (at least in the early years).
>>
>> I'm assuming that N3D will be the academic standard ... do you think
>> this is wrong?
>>
>> Etienne
>>
>>
>
> >
>

--
These are my own views and may or may not be shared by my employer
/*********************************************************************/
/* Dave Malham http://music.york.ac.uk/staff/research/dave_malham/ */
/* Music Research Centre */
/* Department of Music "http://music.york.ac.uk/" */
/* The University of York Phone 01904 432448 */
/* Heslington Fax 01904 432450 */
/* York YO10 5DD */
/* UK 'Ambisonics - Component Imaging for Audio' */
/* "http://www.york.ac.uk/inst/mustech/3d_audio/" */
/*********************************************************************/

e deleflie

unread,
Apr 24, 2009, 6:07:16 AM4/24/09
to ambis...@googlegroups.com
thanks Dave, Oliver.

ok, from a useability point of view, you've got me. SN3DxW does seem
to be more fool proof. And whilst I argued that it only saves the day
on very specific occasions, it really allows you to forget about the
problem of higher orders clipping at all.... which is good useability.

My quoting of Dennis Smalley was very token.... after thinking about
it further, I actually started thinking about creating a piece which
did nothing but position single sounds in a non-reverberant space....
relying solely on the exagerated attenuance of higher frequencies
compared to low frequencies for distance cueing (which I know is not
perceptively strong).

I need a rebuttal from Richard and Aaron.

c'mon guys ... we're so close.

Etienne

e deleflie

unread,
Apr 24, 2009, 6:10:25 AM4/24/09
to ambis...@googlegroups.com
would it be insanity to define the SN3DxW formulas on the PDF of the
standard as a factor applied to N3D?

i.e. ... keep the formulas exactly as they are currently (N3D
formulas) ... and then just do a '... x factor'

in other words ... remove the decision whether people should process
internally in SN3D or N3D.

is this madness? ... feels complicated.

Etienne

Oliver Thuns

unread,
Apr 24, 2009, 8:43:06 AM4/24/09
to ambis...@googlegroups.com
I would use the SN3D formulas.

Conversion to N3D is sqrt(l+1)

Conversion to FMH is
sqrt(4/3) for X20, X21
1 for Z22.
sqrt(8/5) for X30
sqrt(27/15) for X31
sqrt(45/32) for X32
1 for Z33

Hope that is correct...

Aaron Heller

unread,
Apr 24, 2009, 3:24:46 PM4/24/09
to ambis...@googlegroups.com
I think that's sqrt(2l + 1), see Table 2 or Eqn 20 in
Daniel, "Spatial Sound Encoding Including Near Field Effect...", AES
23rd International Conference, 2003.

However, if I've done the algebra correctly, the Matlab doc on
associated Legendre polynomials has an additional factor of 2, so I'm
a bit puzzled.
http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/legendre.html

I'm OK with SN3DxW as an interfacing standard. The procedure we
outline for designing decoders in "Is My Decoder Ambisonic?" works as
long as the functions form a orthogonal basis. There is no
requirement that they are orthonormal.

For the past few months, I've been playing with some peak
normalization scheme, but none have any big advantages over SN3D, and
have the downside of introducing yet another normalization scheme.

Perhaps everyone else knows his already, but something I realized
while looking at conditions numbers of decoding matrices for HOA rigs,
is that as you go to higher orders, the constraints on the angular
distribution of the loudspeakers become much tighter -- there needs to
be at least one loudspeaker between every zero crossing of each basis
function that you are trying to reproduce, so HOA rigs are going to
tend towards being fairly regular.

Oliver Thuns

unread,
Apr 24, 2009, 5:52:58 PM4/24/09
to ambis...@googlegroups.com
On Fri, Apr 24, 2009 at 9:24 PM, Aaron Heller <hel...@ai.sri.com> wrote:
>
> I think that's sqrt(2l + 1),  see Table 2 or Eqn 20 in
> Daniel, "Spatial Sound Encoding Including Near Field Effect...", AES
> 23rd International Conference, 2003.

You're right. I had looked it up in that paper, but got it wrong anyway.

> However, if I've done the algebra correctly, the Matlab doc on
> associated Legendre polynomials has an additional factor of 2, so I'm
> a bit puzzled.
> http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/legendre.html

You mean 2*sqrt(2l+1)? Would this make a difference?

Aaron Heller

unread,
Apr 24, 2009, 6:53:16 PM4/24/09
to ambis...@googlegroups.com

sqrt(2l+1)/2, e.g.,

>> l=4;
>> (sqrt(2*l+1)/2 * legendre(l,.5,'sch') ./ legendre(l,.5, 'norm'))'

ans =

0.7071 1.0000 1.0000 1.0000 1.0000

(don't worry about the first one)

> Would this make a difference?

It doesn't break anything from an Ambisonics perspective, but if we're
picking SN3D because of concerns about clipping, we don't want the
absolute levels to be 3 dB off. And, if the math doesn't work out
cleanly, it might indicate somethings wrong somewhere.

Shall we be pragmatic and define SN3DxW as the basis set provided by
the following Matlab? The stuff in the 'else' conforms to Daniel's
definition of SN3D and it has a peak value of 1 for l>0.

function [yln_p yln_n] = ua_basis( l, m, az, el )
% UA_BASIS -- Universal Ambisonic basis function, degree l and order m
if l == 0
yln_p = sqrt(1/2);
yln_n = sqrt(1/2);
else
pm = legendre( l, sin(el), 'sch');
yln_p = cos(m*az) .* pm(m+1);
yln_n = sin(m*az) .* pm(m+1);
end

Aaron Heller

unread,
Apr 24, 2009, 7:07:07 PM4/24/09
to ambis...@googlegroups.com
On Fri, Apr 24, 2009 at 3:53 PM, Aaron Heller <hel...@ai.sri.com> wrote:

> function [yln_p yln_n] = ua_basis( l, m, az, el )

I suppose those "n"'s should be "m"'s, etc.... Grrrr....

function [Ylm_p Ylm_n] = ua_basis( l, m, az, el )


% UA_BASIS -- Universal Ambisonic basis function,

%
% l is degree, m is order
% az is 0 straight ahead, increases ccw when viewed from above
% elevation is 0 at equator, +pi/2 at north pole
%
if l == 0
Ylm_p = sqrt(1/2);
Ylm_n = sqrt(1/2);
else
Pl = legendre( l, sin(el), 'sch');
Ylm_p = cos(m*az) .* Pl(m+1);
Ylm_n = sin(m*az) .* Pl(m+1);
end

e deleflie

unread,
Apr 24, 2009, 7:10:46 PM4/24/09
to ambis...@googlegroups.com

e deleflie

unread,
Apr 24, 2009, 7:10:53 PM4/24/09
to ambis...@googlegroups.com
> I think that's sqrt(2l + 1),  see Table 2 or Eqn 20 in
> Daniel, "Spatial Sound Encoding Including Near Field Effect...", AES
> 23rd International Conference, 2003.
>
> However, if I've done the algebra correctly, the Matlab doc on
> associated Legendre polynomials has an additional factor of 2, so I'm
> a bit puzzled.
> http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/legendre.html
>
> I'm OK with SN3DxW as an interfacing standard.   The procedure we
> outline for designing decoders in "Is My Decoder Ambisonic?" works as
> long as the functions form a orthogonal basis.   There is no
> requirement that they are orthonormal.

ok .... and on that note, I'll make SN3DxW officially the Universal
Ambisonic normalisation scheme.

I need the formulas! ... I'll also add in two conversion columns ...
one for FuMa, and one for N3D.

> Shall we be pragmatic and define SN3DxW as the basis set provided by
> the following Matlab? The stuff in the 'else' conforms to Daniel's
> definition of SN3D and it has a peak value of 1 for l>0.
>
> function [yln_p yln_n] = ua_basis( l, m, az, el )
> % UA_BASIS -- Universal Ambisonic basis function, degree l and order m
> if l == 0
> yln_p = sqrt(1/2);
> yln_n = sqrt(1/2);
> else
> pm = legendre( l, sin(el), 'sch');
> yln_p = cos(m*az) .* pm(m+1);
> yln_n = sin(m*az) .* pm(m+1);
> end

ok, I've added at least that as a start. Can someone give me
definitions for yln_p and yln_n ?

Etienne

e deleflie

unread,
Apr 24, 2009, 7:12:09 PM4/24/09
to ambis...@googlegroups.com
Aaron,

> I suppose those "n"'s should be "m"'s, etc.... Grrrr....

I'm saying that the code is pseudo code (google and amazon do that a
lot do describe stuff) but what's the 'sch' ?

Etienne

e deleflie

unread,
Apr 24, 2009, 7:15:12 PM4/24/09
to ambis...@googlegroups.com
Aaron, can you check me on that matlab formula here:

http://docs.google.com/Doc?id=df4dtw69_81dsgmgqc3&hl=en

Etienne

Aaron Heller

unread,
Apr 24, 2009, 8:49:56 PM4/24/09
to ambis...@googlegroups.com
On Fri, Apr 24, 2009 at 4:15 PM, e deleflie <edel...@gmail.com> wrote:
>
> Aaron, can you check me on that matlab formula here:
>
> http://docs.google.com/Doc?id=df4dtw69_81dsgmgqc3&hl=en

That's fine. I'd changed the y's to Y's but it looks like current
usage is Y for the complex and y for the real SHs, so stick with the
little y's.

'sch' says to return Schmidt seminormalized values. Unfortunately,
Gnu Octave (as of version 3.0.3) doesn't support that and returns
unnormalized values.

m is really the absolute value of m, so ylm_p the value for +m and
ylm_n is the value for -m, so the fourth order components are

The following returns the vector of values of az, el projected on to
the basis of a given order

function K = ua_project( ambisonic_order, az, el )
% UA_PROJECT - project az, el on to Universal Ambisonics Basis
%
% ambisonic_order is order of the system
% az is azimuth in radians ccw from front
% el is elevation in radians above horizontal

iK = 1;
K(iK) = sqrt(1/2);
iK = iK + 1;

for l = 1 : ambisonic_order
for m = l:-1:1
[ K(iK) K(iK+1) ] = ua_basis(l, m, az, el);
iK = iK + 2;
end
K(iK) = ua_basis(l, 0, az, el);
iK = iK + 1;
end
end

Aaron Heller

unread,
Apr 24, 2009, 9:04:12 PM4/24/09
to ambis...@googlegroups.com
I forgot the example....

On Fri, Apr 24, 2009 at 5:49 PM, Aaron Heller <hel...@ai.sri.com> wrote:

> m is really the absolute value of m, so ylm_p the value for  +m and
> ylm_n is the value for -m, so the fourth order components are

>> K = ua_project(4, pi/3, pi/4)

K =

Columns 1 through 10

0.7071 0.3536 0.6124 0.7071 -0.2165 0.3750 0.4330
0.7500 0.2500 -0.2795

Columns 11 through 20

0.0000 -0.3423 0.5929 0.3248 0.5625 -0.1768 -0.0924
-0.1601 -0.5229 0.0000

Columns 21 through 25

-0.3494 0.6052 0.0988 0.1712 -0.4062


%% straight up, which is the poorly behaved direction

>> K = ua_project(4, pi/3, pi/2)

K =

Columns 1 through 10

0.7071 0 0 1.0000 0 0 0
0 1.0000 0

Columns 11 through 20

0 0 0 0 0 1.0000 0
0 0 0

Columns 21 through 25

0 0 0 0 1.0000

>>

Richard Lee

unread,
Apr 26, 2009, 2:02:18 AM4/26/09
to Ambisonics
I'm keeping out of this debate but will just point out that extra Magic
Numbers, even by yus gurus only add extra obfuscation.

.... as exemplified by the latest exchange.

I don't think any advantage (if any) gained is worth the hassle and possibility
of error.

dg...@york.ac.uk

unread,
Apr 25, 2009, 5:15:56 PM4/25/09
to ambis...@googlegroups.com
I believe that in Scilab you can use the function mtlb_legendre to emulate
the Matlab function legendre fully, including using 'sch' to return Schmidt
seminormalized values, but this needs checking.

Dave

Chris Travis

unread,
Apr 30, 2009, 5:13:50 PM4/30/09
to ambis...@googlegroups.com
Etienne

Last week you wrote..


>on that note, I'll make SN3DxW officially the Universal Ambisonic
>normalisation scheme.

In the analysis document
<http://docs.google.com/Doc?docid=df4dtw69_66d4khc7fb>
you might now want to move the grey emphasis from the N3DxW column of
the table to the SN3DxW column. Also, I see in the conclusion you have
written "Whilst N3D has greater dynamic range". That is quite
misleading. For example, Fons's analysis at the end of last year
showed SN3D to have greater dynamic range than N3D (under certain
assumptions of course) for orders up to 4 for 5, if I remember
correctly. So I suggest cutting that comment.

Chris Travis

Chris Travis

unread,
May 2, 2009, 4:44:30 PM5/2/09
to ambis...@googlegroups.com
Guys

Does SN3DxW normalization have a 'familiar' name yet?
How about taking a terminology lead from FuMa (Furse-Malham),
and calling it MaThu normalization (Malham-Thuns)?

Chris Travis

Aaron Heller

unread,
May 2, 2009, 11:53:48 PM5/2/09
to ambis...@googlegroups.com
Or just "MaTh".

dg...@york.ac.uk

unread,
May 4, 2009, 4:29:31 PM5/4/09
to ambis...@googlegroups.com
Why not just SN3DxW?? (or WaSemi, or SNoW or...)

Dave
Reply all
Reply to author
Forward
0 new messages