Path: utzoo!attcan!uunet!mcsun!ukc!harrier.ukc.ac.uk!gos.ukc.ac.uk!mg From: mg@ukc.ac.uk (M.W.Guy) Newsgroups: comp.dsp Subject: Re: Digital pitch shifting Message-ID: <2387@gos.ukc.ac.uk> Date: 23 Sep 89 13:16:30 GMT References: <1989Sep21.163112.5656@ivucsb.sba.ca.us> Reply-To: mg@ukc.ac.uk (M.W.Guy) Organization: Computing Lab, University of Kent at Canterbury, UK. Lines: 21 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