FFT

Discussions for GoldWave plug-in development
Post Reply
scratchy
Posts: 3
Joined: Tue Feb 14, 2006 12:15 pm

FFT

Post by scratchy »

I would like the FFT View to be improved to offer a Logarithmic scale for frequency and an option to enter a microphone calibration value to scale the y-axis.

I know this is moving from just a visualisation, but you are so close to providing something that would be very useful to technical sound engineers that it seems a pity to leave it out.

Thank you for an excellent software tool. :D
GoldWave Inc.
Site Admin
Posts: 4372
Joined: Wed Mar 10, 2004 6:43 pm
Location: St. John's, NL
Contact:

Re: FFT

Post by GoldWave Inc. »

The "Bulge" visual has an option for a logarithmic frequency scale, but it does not have any axis options. A logarithmic option may be added to some of the visuals in a future update.

Chris
scratchy
Posts: 3
Joined: Tue Feb 14, 2006 12:15 pm

Post by scratchy »

Hi Chris,

What does the bulge convey? It seems to be symmetric spectrum about a zero frequency.

Thanks for the reply and I look forward to the new FFT update.
GoldWave Inc.
Site Admin
Posts: 4372
Joined: Wed Mar 10, 2004 6:43 pm
Location: St. John's, NL
Contact:

Post by GoldWave Inc. »

It is just a symmetric (double mirrored) spectrum covering the full frequency range.

Chris
scratchy
Posts: 3
Joined: Tue Feb 14, 2006 12:15 pm

Post by scratchy »

Goldwave keeps getting better and better; thank you!

Logarithmic scale for frequency is now in most visualisations - thank you very much.

The 5.18 Waterfall is really good but a scrolling time axis display would make it even more useful.

Also the Spectogram and Waterfall would be good with the ability to change the time scale lines per second to feed more or less content for a given time. I can play it back at reduced speed and see the spectral content in more detail but doing it real time with a scale woud be great.
GoldWave Inc.
Site Admin
Posts: 4372
Joined: Wed Mar 10, 2004 6:43 pm
Location: St. John's, NL
Contact:

Post by GoldWave Inc. »

You can change the frame rate (press F11, Visual tab) to change the time scale lines per second.

Chris
Fourier
Posts: 2
Joined: Mon Apr 28, 2008 2:53 pm

Offset

Post by Fourier »

I has already say it, but want to remind about frequency offset down in Spectrum. Try to generate sine wave 100 - 500 Hz and look for spetrum. Peak is placed at 23,4375 Hz lower than need. It seems as a mistake in function that drawing spectrum (or Scale), because in Spectrum filter, Parameteric EQ and Noise reduction it draw right.
Also, choise for FFT sise for Spectrum and some more fft window (Hann, Kaiser 1-9,Gauss,Blackman) it a good idea.

PS: 23,4375 Hz = 48000 Hz / 2^FFT_Size;
FFT_Size = 11;
GoldWave Inc.
Site Admin
Posts: 4372
Joined: Wed Mar 10, 2004 6:43 pm
Location: St. John's, NL
Contact:

Re: Offset

Post by GoldWave Inc. »

The offset problem will be fixed in the next update.

Chris
Fourier
Posts: 2
Joined: Mon Apr 28, 2008 2:53 pm

Post by Fourier »

One more:
Applying fft windows is decrease level of signal (that go to fft function), as result - full scale sine wave has peak at ~ -12 Db (Hamming window). To place this peak at 0 Db need to normalise fft window (multiply on (FFT_Size / SUM(FFT_Window) ). It can be solved:

//*************************************
double coef;
double FFT_Window[FFT_Size];
int i;


//here generate chosen window (Hamming)
for(i=0;i<FFT_Size;i++)
FFT_Window=0.53836-(1-0.53836)*cos(2.0*PI*i/(FFT_Size-1));

//here count sum of FFT_Window
coef=0;
for(i=0;i<FFT_Size;i++)
coef+=FFT_Window;

coef=(double)FFT_Size / coef; //coef!=0 always

//here multiply FFT_Window on coef
for(i=0;i<FFT_Size;i++)
FFT_Window*=coef;
//*************************************

Multiplying fft window on a constant is equivalence to multiply input signal on same constant. No other calculation is needed. Fourier transform is linear, i.e. increase input level on X Db is increase peak after FFT on X Db.
I work closely with fft (in my program for microcontroller) and i was need to measure level at determined frequences. Without normalising result is wrong.
PS: So, what i want to say. If you want to correctly output spectrum of signal you can follow this way. Of course it only your choice, and you can skip it.
//*************************************
//Hann window
for(i=0;i<FFT_Size;i++)
FFT_Window=0.5*(1-cos(2.0*PI*i/(FFT_Size-1)));

//Sine window
for(i=0;i<FFT_Size;i++)
FFT_Window=sin(PI*i/(FFT_Size-1));

//Gauss window ;0<gauss_G<=0.5, useful 0.3
for(i=0;i<FFT_Size;i++)
FFT_Window=exp(-0.5*pow((i-(FFT_Size-1)*0.5)/(gauss_G*(FFT_Size-1)*0.5),2));
//*************************************
Post Reply