From: ericj@hwcae.Honeywell.COM (Eric Jacobsen)
Subject: Re: Halving sample speed while keeping pitch
Organization: Honeywell, Air Transport Division; Phoenix, AZ
	<ERICJ.92Aug24131911@lagos.cfsat.Honeywell.COM>
	<1992Aug25.114530.14241@aristo.tau.ac.il>
Date: Wed, 26 Aug 1992 19:06:50 GMT

In article <1992Aug25.114530.14241@aristo.tau.ac.il> finkel@virgo.math.tau.ac.il (Udi Finkelstein) writes:
   >
   >One way to get what you are looking for:
   >
   >1. Upsample the signal until it is of the length you wish. The pitch
   >will be lower, but you can get the time duration you want.
   >
   >2. Take the upsampled signal and mix it with a sine wave that shifts
   >the pitch back up. (You get a sum and difference frequency, you filter
   >out the difference freq). Actually, this is kinda tough to do
   >digitally. It is a lot easier to do this in the analog domain when
   >you play it back.
   This method isn't very accurate, and I'll give an example:

   Suppose our signal has two peaks, one at 1Khz, and the other at 2KHz.

   1. we upsample by 100%, we now get the two peaks at 500Hz and 1Khz.
   2. by multiplying with a 500Hz sine wave, we get 1Khz, and 1.5KHz peaks.
      if we use 1Khz, we get 1.5KHz and 2KHz peaks.

   This demontrates that the method above doesn't exacly preserve the spectral
   content of the signal while making it longer.
   However, I think that for small speed variations it should be bearable.

Mixing does compress or stretch the spectra as you describe, but to
accomplish the time stretch and pitch preservation that the original
poster asked for, you have to give up something. I challenge anybody
to come up with a method of doing this that doesn't introduce some
sort of distortion (spectrally or otherwise).

At least with the mixing method you haven't introduced any *new*
components to the signal, you haven't added any noise (theoretically),
and the spectral relationships have been preserved, although, as you
pointed out, things get stretched or mooshed a bit. When you actually
do this (which is how a lot of audio special effects are done for
movies, etc.) it sounds pretty good.

*BTW*, something that should be mentioned: As in the above example
the 500 and 1kHz signals get mixed up to 1kHz and 1.5kHz, the
difference frequencies appear at 0Hz and 500Hz, which are definitely
in band for audio. Depending on where you want the spectra to land,
it may be desirable to mix the signal way up to some high freq, filter
out the unwanted stuff, mix it back down to where you want it and filter
out the unused portion. Another note: Every time you split the spectra
like this and filter half away, you lose 3dB in the Signal-to-Noise ratio.
(So, although we haven't added any noise, we lose half the signal power.)

Gee, sorry about the long post, everybody...
--
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
* Eric Jacobsen        Honeywell Inc.                           *
|     1-602-436-3941   Commercial Flight Systems, Air Transport |
* HVN       436-3941   US Mail: P.O. Box 21111, MS 2Q34C1       *
| FAX 1-602-436-1310   Phoenix AZ 85036-1111                    |
* INet: ericj@hwcae.honeywell.com                               *
| UUCP: uunet!hwcae.honeywell.com!ericj@uunet.uu.net            |
* The opinions expressed are my own and therefore better        *
| thought out than my employer's.                               |
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Newsgroups: comp.sys.amiga.audio