Subject: Re: [linux-audio-dev] surround/n-channel panning
From: Nick Fells (nick_AT_music.gla.ac.uk)
Date: Tue Mar 12 2002 - 12:48:57 EET
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
This archive was generated by hypermail 2b28 : Tue Mar 12 2002 - 12:38:06 EET