octal-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Octal-dev] Pitch Shifter / Extracting Fourier Description


From: Michael Krause
Subject: Re: [Octal-dev] Pitch Shifter / Extracting Fourier Description
Date: Wed, 17 May 2000 20:31:33 +0200 (CEST)

On Tue, 16 May 2000 address@hidden wrote:

>   Pitch shifting without changing the sampling rate would seem  to re-
>   quire an  identification  of the pitch as  frequency  and  amplitude
>   (Fourier description)  and then changing the frequency in the sampl-
>   ing generate phase (reverse Fourier transform).

I just did a little experiment on my own: I should have thought about
it before, but I simply assumed pitch shifting was really just
literally shifting the frequency domain by an additive constant, which
it is NOT of course, since that way, the harmonics get distorted
(sounds separated by an octave before aren't any longer after this
"shift"). Real pitch shifting is thus a shift of the frequency domain
on a logarithmic scale.

However, I've coded up a pitch shifter using that wrong
assumption. This is really simple, since a shift in the frequency
domain corresponds to a multiplication by a complex exponentional in
the time domain. You have to perform this on the analytical signal
(complex time domain signal without negative frequencies) and then get
the real signal from the shifted analytical signal. The resulting
formula is then:

        y(k) = x(k) * cos(a*k) + x'(k) * sin(a*k),

where x(k) is the input signal, x'(k) is its Hilbert transform
(approximated using an FIR), a is a constant describing the amount of
shifting, and y(k) is the output signal.

Sounds funny. Anyone interested in the code? (Or in a more detailed
derivation?)

Excuse me, I'm on something strong right now :-)

-- 
michael krause [aka raw style / lego] - www.tu-harburg.de/~semk2104/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]