Csound Csound-dev Csound-tekno Search About

Fwd: [Csnd] HRTF questions and possible bugs

Date2014-07-02 15:40
FromVictor Lazzarini
SubjectFwd: [Csnd] HRTF questions and possible bugs

========================
Dr Victor Lazzarini
Senior Lecturer
NUI Maynooth, Ireland
victor dot lazzarini at nuim dot ie




Begin forwarded message:

From: Brian Work <brian@soundtraining.com>
Subject: Re: [Csnd] HRTF questions and possible bugs
Date: 2 July 2014 15:29:26 IST
To: Victor Lazzarini <Victor.Lazzarini@nuim.ie>

The bottom left corner of the room is 0, 0, 0 yes. The coordinate system grows from there based on the room size. 
Hrtfmove is a different geometry system; it simply moves a source around a listener using angles and does not consider distance.
Hrtfearly considers reflections and environments. It is designed to work with hrtfreverb which adds diffuse field reverb.
Phase truncation and woodworth were designed as alternatives to the generally used minimum phase. They perform favourably in testing. Phase truncation is perhaps best in this case, perceptually and on CPU.
For more, see http://bmcarty.ie/pubs/ , especially the csound journal article.

On 2 Jul 2014, at 14:22, Victor Lazzarini <Victor.Lazzarini@nuim.ie> wrote:

another question ;)
========================
Dr Victor Lazzarini
Senior Lecturer
NUI Maynooth, Ireland
victor dot lazzarini at nuim dot ie




Begin forwarded message:

From: Michael Saunders <odradek5@gmail.com>
Subject: Re: [Csnd] HRTF questions and possible bugs
Date: 2 July 2014 13:52:36 IST

Thank you, I've done some more testing and I think that solves the problem---the effect in the horizontal plane sounds very good.  So, now I think the origin of hrtfearly is the left rear corner of the room on the floor.  Is that correct?  I'm not entirely sure that the origin of z is the floor---it's more difficult to hear the effect.  I also think that the origin of the hrtfmove opcodes is the center of the room, so to use the two together I'm using something like:
 hrtfearly ... kSx+giroomX/2, kSy+giroomY/2, kSz+giroomZ/2,
kLx+giroomX/2, kLy+giroomY/2, kLz+giroomZ/2, ...
I hope that's right.

I have one more quick question that I forgot earlier.  I've been reading about the minimal phase, truncated phase, and functional  (Woodworth) options with the hrtfmove opcodes, and they all sound quite similar to me.  What are the reasons to choose one rather than another?  Are they suited to different types of signals or motions?

Thank you again!


On Wed, Jul 2, 2014 at 6:29 AM, Victor Lazzarini <Victor.Lazzarini@nuim.ie> wrote:
Here’s a response from the author of the opcodes.
========================
Dr Victor Lazzarini
Senior Lecturer
NUI Maynooth, Ireland
victor dot lazzarini at nuim dot ie




Begin forwarded message:

From: Brian Work <brian@soundtraining.com>
Subject: Re: [Csnd] HRTF questions and possible bugs
Date: 2 July 2014 12:06:12 IST
To: Victor Lazzarini <Victor.Lazzarini@nuim.ie>

Hi Victor,

I think the issue may be to do with the coordinates. 
The listener/source locations are defined within the coordinates of the room, so if the room is 10 by 10 by 3 for example, an x value of 1is near the left wall, 9 near the right. 
The example should illustrate this. 
Negative coordinates are probably truncated.
I think this may solve most issues reported.

On 2 Jul 2014, at 09:30, Victor Lazzarini <Victor.Lazzarini@nuim.ie> wrote:


========================
Dr Victor Lazzarini
Senior Lecturer
NUI Maynooth, Ireland
victor dot lazzarini at nuim dot ie




Begin forwarded message:

From: Michael Saunders <odradek5@gmail.com>
Subject: [Csnd] HRTF questions and possible bugs
Date: 2 July 2014 05:26:38 IST

I have been experimenting with the opcodes hrtfmove, hrtfmove2, and hrtfearly.  There are several confusing points in the docs.  The orientation and units aren't always explained, but I think they are as follows: 
hrtfearly:
ksrcx, ksrcy, ksrcz, klstnrx, klstnry, klstnrz:
both source and listener positions as Cartesian coordinates in meters with the origin at the center of the room.  I think the orientation of the listener is in the +ve y direction (so:

+ve x=right,
+ve y=forward,
+ve z=up).
kheadrot:  in degrees, 0=forward, increasing turns the head clockwise, so, e.g., 90 turns the head right.

1. Is this correct?

2. hrtfearly: Head rotation has no effect if y<~-5% room length.
If I place the listener anywhere with y>=0 and move 
kheadrot from 0 to 360, I get the expected result---the head seems to turn clockwise, but if y is, say, -3, the right reflections are weaker than the left and the ITD=0 for all angles.

3. hrtfearly: I place the listener in the center of the room, and move the source in a circle 1 meter from the listener, from 0 to 360 (starting forward of the listener and moving clockwise).  The right reflection is earlier (with roughly constant ITD) for all angles except 0 and 360, where right and left arrive simultaneously.  The reflections are loudest when behind and to the left of the listener, from about 175--270 degrees clockwise from forward.  The impression I get is not of a sound circling my head, as I get with the hrtfmove opcodes.

I expected the ITDs to increase with |x|, left earlier when x<0, right earlier when x>0, and both weaker when y<0.  Am I wrong or is there something wrong with 
hrtfearly?