Audio Signal Processing: changing spectrum directly

  1. Hi all,

    I'm having some trouble understanding the consequences of directly changing the frequencies in the spectrum of an audio signal. Let me give you an example:

    Lets say I have some audio signal, which I convert to a spectrum (in LabView, using a
    direct cosine transform (to avoid explicitly working with phases)). Then, when I have this
    spectrum, I add a bunch of zeroes to the end (so that I exactly double the number of
    samples). Now, since I've double the number of samples, my audio signal becomes twice
    as long (same playback rate), and my sound has changed pitch. The problem with this is,
    I don't see how the inverse transform exactly "strechtes'' the time signal.

    Now, starting with the original spectrum again, I try to interleave the spectrum with zeroes (i.e. sample1, 0, sample2, 0, etc..). So the spectrum again becomes twice
    as long, and so does my audio sample. But, my audio sample now has not changed pitch/speed,
    and furthermore, the sample now contains the original twice! The second part is in
    reverse, however...

    I have been trying for some time to figure it out; In the process i have learned a great deal about phase vocoders etc. and all kinds of techniques to change pitch w/o changing speed and vice versa. Maybe I'm missing a crucial part of 'understanding'. I am also unable to link this to the frequency resolution. Since i know that
    Freq.Res = 1/(Num.Samp. * dt),
    increasing the number of samples also increases my freq. res.; But this has "no effect" if I increase the number of samples in the frequency domain, right?
    Last edited: Oct 1, 2009
  2. jcsd
  3. Interleaving frequency spectra (audio)


    I have an audio signal, which I have transformed into the frequency domain. Lets say for simplicity that it contains 1024 samples, sampled at 1024 Samples/s. Now, as a first experiment I add 1024 samples (in the frequency domain!), all with zero amplitude. This has doubled the number of samples. When I transform this spectrum back into the time domain, my signal lasts twice as long (I expected this), but my signal is slowed down by a factor of two also. I would've guessed this based on the fact that the time domain signal will not contain zeroes also.. but I do not see how the inverse transform also 'stretches' the time signal so that it exactly fits twice.

    The second experiment involves not adding the zeros to the end of the spectrum, but interleaving them. Again, my signal duration doubles, but now something completely different
    happens. In the time domain, the signal first plays normally, but the second half of my audio sample now contains the original in reverse!

    I have the feeling I'm missing something crucial.. I am not changing the frequency resolution by adding zeroes in the frequency domain, am I?

    Thanks for any help in advance!
Know someone interested in this topic? Share this thead via email, Google+, Twitter, or Facebook

Have something to add?
Similar discussions for: Audio Signal Processing: changing spectrum directly