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
