Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!mcsun!sunic!draken!d88-jwa From: d88-jwa@nada.kth.se (Jon W{tte) Newsgroups: comp.dsp Subject: Pitch shift / offset and FFT Summary: More ramblings about pitch shifting dos and donts Message-ID: <1787@draken.nada.kth.se> Date: 26 Sep 89 21:27:00 GMT References: <89264.171306P85025@BARILVM.BITNET> <9520001@hpsad.HP.COM> Reply-To: h+@nada.kth.se (Jon W{tte) Followup-To: comp.dsp Organization: Royal Institute of Technology, Stockholm, Sweden Lines: 48 In article <9520001@hpsad.HP.COM> toma@hpsad.HP.COM (Tom Anderson) writes: [ Hilbert transform ] >The above technique has the advantage that it doesn't rely on an FFT, so >that windowing issues are avoided. The hardware is also easier than an But the disadvantage that it's not doing what we want to do and that it completely, utterly inusable on any kind of signal containing overtones. >An interesting question is: how many FFT points are required? I think >that you need to know the maximum frequency to be represented, the >minimum frequency to be shifted, and the smallest amount of shift. To >shift from C0 at 16.35Hz to C#0 at 17.32Hz requires a shift of about >1Hz, so the FFT bins should be spaced by about 1Hz. An FFT with this >spacing covering 0Hz-20kHz would need about 20,000 points. To keep the >fidelity high, one transform every few milliseconds or so would be >required. Such a brute force technique gets expensive quickly. You're off by a mile, in my humble opinion... Most of those points would be null. I have heard it said (and have no reason to doubt) that any musical signal (that is, inclusive of chords, multiple instruments et al) can be faithfully reproduced using 1024 point FFT at every sample. That is, at any one time, you don't have more than 1024 (audible) simple components in the sound (remember: a note isn't "one" frequency, it's got one BASE NOTE and lots of harmonics) but these 1024 components may change between each and every sample... The "sliding window" FFT described earlier sounded great. Too bad it appears to be copyrighted and proprietary, so we can't share it :-( Also, how about an algorythm that reduced frequency mixing interference rendundance from the FFT ? Or is that already taken care of ? I.e. if you have one 1000 Hz sine wave and one 1100 Hz sine wave, you'd also get one 100 Hz harmonic (and probably a 2100 Hz harmonic as well ?) These wouldn't have to be represented in the FFT (had they ?) since they'll be re-created in the output. Of course, this is provided the components are steady for at least a few cycles, and that's explicitly NOT provided from the above mentioned "sliding window" method or new-FFT-in-each-point method. h+@nada.kth.se -- Just because you're paranoid doesn't mean they AREN'T after you.