Obxd synthesizer
- KVRAF
- 12615 posts since 7 Dec, 2004
re: Fourier transforms;
It's very important to keep in mind the fact that the discrete Fourier transform is something other than what is usually described. The "fast Fourier transform" is an optimization of the computation of the discrete Fourier transform by breaking down the computations into a factorization but is otherwise the same thing.
There are a wide variety of factorization algorithms and so the term "FFT" really doesn't describe any one thing which makes it particularly inappropriate for use in this sort of discussion. It's nothing more than a widely varied optimization which makes the DFT easier to compute.
Since the Fourier transform itself is impossible to compute we can instead make the assumption that when we use the term "FT" associated with discrete signal processing we're referring to the "DFT".
Now the important thing to remember:
The discrete Fourier transform operates only on continuous signals, just like the Fourier transform.
It can not work on a discontinuous signal!
In order to make the signal continuous we make an absolutely wild assumption.
1) The signal within the analysis window (the signal to be transformed) repeats infinitely in both directions. (I.e. it is assumed to be continuous in this way.)
In order to reduce harmonics generated by the repeating edges not present in the original signal a "window" is used. This is basically an amplitude envelope which is used to trim away the edges.
We get the side-band products of the amplitude modulation by the window function in the result!
If you apply the Fourier transform to a signal which is truly continuous (for example the sin() function with an integer number of whole cycles) the result does not include side-band products and is instead perfect.
It's very important to keep in mind the fact that the discrete Fourier transform is something other than what is usually described. The "fast Fourier transform" is an optimization of the computation of the discrete Fourier transform by breaking down the computations into a factorization but is otherwise the same thing.
There are a wide variety of factorization algorithms and so the term "FFT" really doesn't describe any one thing which makes it particularly inappropriate for use in this sort of discussion. It's nothing more than a widely varied optimization which makes the DFT easier to compute.
Since the Fourier transform itself is impossible to compute we can instead make the assumption that when we use the term "FT" associated with discrete signal processing we're referring to the "DFT".
Now the important thing to remember:
The discrete Fourier transform operates only on continuous signals, just like the Fourier transform.
It can not work on a discontinuous signal!
In order to make the signal continuous we make an absolutely wild assumption.
1) The signal within the analysis window (the signal to be transformed) repeats infinitely in both directions. (I.e. it is assumed to be continuous in this way.)
In order to reduce harmonics generated by the repeating edges not present in the original signal a "window" is used. This is basically an amplitude envelope which is used to trim away the edges.
We get the side-band products of the amplitude modulation by the window function in the result!
If you apply the Fourier transform to a signal which is truly continuous (for example the sin() function with an integer number of whole cycles) the result does not include side-band products and is instead perfect.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
-
- KVRist
- 252 posts since 17 Aug, 2005
Ok, so this is finally something interesting and useful, thank you. I think you're suggesting that the windowing artifacts might appear as aliases.aciddose wrote:re: Fourier transforms;
It's very important to keep in mind the fact that the discrete Fourier transform is something other than what is usually described. The "fast Fourier transform" is an optimization of the computation of the discrete Fourier transform by breaking down the computations into a factorization but is otherwise the same thing.
There are a wide variety of factorization algorithms and so the term "FFT" really doesn't describe any one thing which makes it particularly inappropriate for use in this sort of discussion. It's nothing more than a widely varied optimization which makes the DFT easier to compute.
Since the Fourier transform itself is impossible to compute we can instead make the assumption that when we use the term "FT" associated with discrete signal processing we're referring to the "DFT".
Now the important thing to remember:
The discrete Fourier transform operates only on continuous signals, just like the Fourier transform.
It can not work on a discontinuous signal!
In order to make the signal continuous we make an absolutely wild assumption.
1) The signal within the analysis window (the signal to be transformed) repeats infinitely in both directions. (I.e. it is assumed to be continuous in this way.)
In order to reduce harmonics generated by the repeating edges not present in the original signal a "window" is used. This is basically an amplitude envelope which is used to trim away the edges.
We get the side-band products of the amplitude modulation by the window function in the result!
If you apply the Fourier transform to a signal which is truly continuous (for example the sin() function with an integer number of whole cycles) the result does not include side-band products and is instead perfect.
- KVRAF
- 12615 posts since 7 Dec, 2004
No I'm not.
I was telling you that the modulation with the window produces side-band products, but calling something a side-band which isn't would not make sense.

Here is a "perfect" FT without a window because the underlying signal is continuous.
Unfortunately it has a bit of a DC offset and you can see the roll-off at the beginning of the anti-aliasing filter although not so much at this floor setting (-345 dB.)
The noise is due to computation in floating point + aliases of the harmonics from the stdlib sin() function.
I was telling you that the modulation with the window produces side-band products, but calling something a side-band which isn't would not make sense.

Here is a "perfect" FT without a window because the underlying signal is continuous.
Unfortunately it has a bit of a DC offset and you can see the roll-off at the beginning of the anti-aliasing filter although not so much at this floor setting (-345 dB.)
The noise is due to computation in floating point + aliases of the harmonics from the stdlib sin() function.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
-
- KVRist
- 252 posts since 17 Aug, 2005
So your point is that you're bothered by the use of the term sidebands?aciddose wrote:No I'm not.
I was telling you that the modulation with the window produces side-band products, but calling something a side-band which isn't would not make sense.
Here is a "perfect" FT without a window because the underlying signal is continuous.
Unfortunately it has a bit of a DC offset and you can see the roll-off at the beginning of the anti-aliasing filter although not so much at this floor setting (-345 dB.)
The noise is due to computation in floating point + aliases of the harmonics from the stdlib sin() function.
I've got plenty of examples of softsynths that produce actual sidebands, as well.
- KVRAF
- 12615 posts since 7 Dec, 2004
How off-topic are you willing to go?
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
- KVRAF
- 12615 posts since 7 Dec, 2004
Set the spectrum frequency to linear rather than logarithmic.
The even harmonic peaks are interesting and could point to a number of things.
Try shifting the frequency up and down and watch how the spectrum changes. If you see steep edges appearing for a few notes (or single notes) that's a sign it's a wavetable osc.
Try 10k, and 20k and so on. It is often much easier to see aliased harmonics when you aren't looking at the product of both the anti-aliasing filter and the natural decrease in amplitude of the harmonics (1/N^o).
If it is using FIR filters, they're way, way too long and ridiculously CPU expensive. Most software would use a shorter table instead.
Also try decreasing the floor, rather than -144 try -200 or -240.
The even harmonic peaks are interesting and could point to a number of things.
Try shifting the frequency up and down and watch how the spectrum changes. If you see steep edges appearing for a few notes (or single notes) that's a sign it's a wavetable osc.
Try 10k, and 20k and so on. It is often much easier to see aliased harmonics when you aren't looking at the product of both the anti-aliasing filter and the natural decrease in amplitude of the harmonics (1/N^o).
If it is using FIR filters, they're way, way too long and ridiculously CPU expensive. Most software would use a shorter table instead.
Also try decreasing the floor, rather than -144 try -200 or -240.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
- KVRAF
- 12615 posts since 7 Dec, 2004
The "other" synth is using a significantly under-spec'd filter with a stop-band level of only -60db. In fact it may not be using any filter at all. Similar appearance would result from 16x oversampling of a naive waveform.
For comparison I believe Xhip uses a "mid-range" filter. It's as fast (short) as possible while still producing results I find acceptable.
http://xhip.net/temp/xhip_square.wav
Stop-band level = -90 dB
I've used C#6 rather than 1k to make aliases more visible. At 48k they overlap perfectly at 1k multiples.
For comparison I believe Xhip uses a "mid-range" filter. It's as fast (short) as possible while still producing results I find acceptable.
http://xhip.net/temp/xhip_square.wav
Stop-band level = -90 dB
I've used C#6 rather than 1k to make aliases more visible. At 48k they overlap perfectly at 1k multiples.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.
-
- KVRAF
- 5851 posts since 9 Jul, 2002 from Helsinki
-
- KVRAF
- 3499 posts since 9 Oct, 2004 from Poland
I would put it on my Box, but i am not sure what kind of license it goes under.
If it is GPL, should i include the GPL in the rar archive ?
Hmm...
Any link where the original author explains it ?
If it is GPL, should i include the GPL in the rar archive ?
Hmm...
Any link where the original author explains it ?
[====[\\\\\\\\]>------,
Ay caramba !
Ay caramba !
-
- KVRAF
- 5851 posts since 9 Jul, 2002 from Helsinki
- KVRAF
- 7691 posts since 11 Jun, 2006
You do not have the required permissions to view the files attached to this post.
HW SYNTHS [KORG T2EX - AKAI AX80 - YAMAHA SY77 - ENSONIQ VFX]
HW MODULES [OBi M1000 - ROLAND MKS-50 - ROLAND JV880 - KURZ 1000PX]
SW [CHARLATAN - OBXD - OXE - ELEKTRO - MICROTERA - M1 - SURGE - RMiV]
DAW [ENERGY XT2/1U RACK WINXP / MAUDIO 1010LT PCI]
HW MODULES [OBi M1000 - ROLAND MKS-50 - ROLAND JV880 - KURZ 1000PX]
SW [CHARLATAN - OBXD - OXE - ELEKTRO - MICROTERA - M1 - SURGE - RMiV]
DAW [ENERGY XT2/1U RACK WINXP / MAUDIO 1010LT PCI]
