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
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...
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?
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
> 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
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
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
>>
.... as exemplified by the latest exchange.
I don't think any advantage (if any) gained is worth the hassle and possibility
of error.
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
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