Isn't it the sine rule? I.e. the amplitude in one speaker should
increase sinusoidally as the other decreases sinusoidally (using the
first quadrant of a sine function?) to maintain power through the pan?

You might be interested, not just in ambisonics (see the York music tech
group at http://www.york.ac.uk/inst/mustech/3d_audio/welcome.html), but
also in vbap (vector-based amplitude panning), developed at Helsinki.
See http://www.acoustics.hut.fi/research/abstracts/vbap.html
and also
http://www.icad.org/websiteV2.0/Conferences/ICAD98/papers/PULKKI.PDF,
maybe.


nick (other nick!) :)


Nick Bailey wrote:
> 
> I had a row with Smalley about this at a computer music weekend in the UK
> years ago.
> 
> It isn't so bad if you don't want to take relative phase and doppler into
> account.  It's a moving source, right?  So its apparent frequency changes.
> Panning doesn't begin to model even the simplest moving source, and the only
> real way to do that is to try to reconstruct the sound field at the listener's
> head (i.e. do ambisonics, sorry :)
> 
> But in fact, most people really want a pan of the sort you described.  You use
> the human in the loop to make it sound right, and the fact that power isn't
> conserved doesn't matter too much.  It's not conserved with a pan pot, after
> all (is it?)
> 
> For a start though, I'd observe the inverse square law, and work in powers.
> So [speaker_gain]^2 = x^2/(total distance)^2 (x being the speaker distance).
> NB: not total (distance)^2.  I've not tried it, so I can't say if it'll make
> much difference (we've taken our studio in elec eng to pieces at the moment).
> 
> Not much in the way of references, I'm afraid.  I've bcc'd this to a man who
> might know...
> Nick/
> 
> Paul Davis wrote:
> 
> > ignoring the subtleties of things like ambisonics and filtered
> > channels for the time being, am i right in thinking that surround
> > panning is just simple math? my mental model is:
> >
> >         total_distance = 0
> >
> >         foreach speaker
> >             speaker.distance = speaker.compute_distance (pan center);
> >             total_distance + speaker.distance
> >
> >         foreach speaker
> >             speaker.pan_gain_coefficient = speaker.distance/total_distance;
> >
> > i think there is more to it than this. i know that this doesn't work
> > for stereo, for example - it doesn't produce an equal power pan.
> >
> > can someone point me at some good references?

-- 
Dr Nick Fells,  
Music Department,
University of Glasgow,          Tel: +44 (0) 141-330 4096
Glasgow G12 8QQ                 Fax: +44 (0) 141-330 3518
UK.                             http://www.music.gla.ac.uk/~nick

Reply via email to