[comp.dsp] Digital pitch shifting

todd@ivucsb.sba.ca.us (Todd Day) (09/21/89)

Is there an easy way to do pitch shifting digitally in real time?
The only method I've been able to come up with involves repeating
or throwing out sections, which results in clicking.

I would like the method to be short and sweet, as I only have
time for 125 instructions/sample (250 if I only do mono).

Thanks.

-- 

Todd Day  |  todd@ivucsb.sba.ca.us  |  ivucsb!todd@anise.acc.com
"It takes a smart man to know when he's stupid." - Barney Rubble

mg@ukc.ac.uk (M.W.Guy) (09/23/89)

In article <1989Sep21.163112.5656@ivucsb.sba.ca.us> todd@ivucsb.sba.ca.us (Todd Day) writes:
>Is there an easy way to do pitch shifting digitally in real time?
>The only method I've been able to come up with involves repeating
>or throwing out sections, which results in clicking.
>
>I would like the method to be short and sweet, as I only have
>time for 125 instructions/sample (250 if I only do mono).

The real way to do this is the ubiquitous phase vocoder.
Process the sound into amplitude/phase components for many frequency
bands, diddle with the results appropriately (in this case, shift the frequency
components up) and then transform back.  A 1024-point FFT will do this for you.

However, in 125 instructions of a conventional processor, your best way is
probably to have a cyclic buffer, with independent read- and write-pointers,
running at different rates.  You get a click every time the pointers pass each
other, but you can arrange the size of the buffer so that this happens every
50th of a second and people will ignore it as mains noise...

Yuk
	Martin