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.
FFT
-
- Site Admin
- Posts: 4372
- Joined: Wed Mar 10, 2004 6:43 pm
- Location: St. John's, NL
- Contact:
Re: FFT
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
Chris
-
- Site Admin
- Posts: 4372
- Joined: Wed Mar 10, 2004 6:43 pm
- Location: St. John's, NL
- Contact:
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.
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.
-
- Site Admin
- Posts: 4372
- Joined: Wed Mar 10, 2004 6:43 pm
- Location: St. John's, NL
- Contact:
Offset
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;
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;
-
- Site Admin
- Posts: 4372
- Joined: Wed Mar 10, 2004 6:43 pm
- Location: St. John's, NL
- Contact:
Re: Offset
The offset problem will be fixed in the next update.
Chris
Chris
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));
//*************************************
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));
//*************************************