Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!ames!hao!husc6!bbn!denbeste From: denbeste@bbn.COM (Steven Den Beste) Newsgroups: comp.sys.amiga Subject: Re: Sonic Tomfoolery Message-ID: <7123@cc5.bbn.COM> Date: 25 Feb 88 15:15:33 GMT Organization: Bolt Beranek and Newman, Inc., Cambridge, MA Lines: 55 rap@ardent.UUCP (Rob Peck) writes: > Subject: Sonic Tomfoolery > We have two ears, and two output channels to fool with on the Amiga. > Each of the stereo channels has two real hardware channels feeding > into it. If I hack the audiotools to add the stereo support > that I need for a coming hack, I can send the same sound to > a left and right channel at the same time, one at a higher volume > and the other at a lower volume, moving the sound from left to > right as the volume is modified on both channels simultaneously. > Then, not only control the volume, but also control the phasing You're working too hard - the human ear has no mechanism for detection of phase. Only for low frequencies does it matter, and there only because it manifests as a slight time delay which neurons can measure. > between the two channels a little bit so as to create a distance > perception "somewhere out there in front of me to the left or the > right". > But what kind of controls must I apply to make the sound appear > to be "behind me"????? The front/back asymmetry of the human ear affects high frequencies much more than low frequencies. If your signal goes through the equivalent of a variable low-pass filter, it will seem to move front-to-back with front correlating to lots of high frequencies and back to much less. Precisely where the hinge of the filter ramp should be I'm not certain - 8-10 KHZ would be a good place to start. Of course, this is a lot more difficult thing to do than running the amplitude up and down. An approach like the following might work: Take your signal and run it through an FFT. Severely cut down the high frequencies and then resynthesize the waveforms. We now have O (the original waveform) and P (the processed, low-passed waveform). You then generate a series of waveforms Q (containing various amounts of O and P) by taking each location in turn and doing a non-equal average between the same locations in O and P: Q(10%) = (9*O+P)/10 Q(20%) = (8*O+2*P)/10 etc. I'm guessing on this - it might turn out that the resynthesized waveform bore no resemblance to the original. If so, you might have to resynthesize an unchanged waveform just to make sure the phases are right (vital for the averaging approach I describe). If this approach doesn't work, then you have to do it the hard way: process the FFT output several times and resynthesize each. -- Steven C. Den Beste, Bolt Beranek & Newman, Cambridge MA denbeste@bbn.com(ARPA/CSNET/UUCP) harvard!bbn.com!denbeste(UUCP)