From the original SynthMaker forum (2004–2014), with its members’ names and dates.
Disco_Steve ·
Hello Fellow SMers
I have made this, I think it is correct. please inform me if it is not!
If you feel like optimising it, that would be great!
my plan is then to work out how to make a 2^n fft algo, running at stream rate, (or hopped so that it runs every Hop samples)
once this is done, we should have a much better way of doing linear phase EQ's and convolution in SM 😀
I tried to keep it clean, but its not easy!
Steve
TomC ·
To be honest, I don't understand a couple of modules:
- why is there a module named 'mult' which multiplies everything by 1?
- why is there a module named '1/N' when it computes 1/8 * N?
Tom
Disco_Steve ·
the 'mult' is for changing the relative values of the frequency component ie, an EQ 🙂
and the 1/N is just what you have to do to do an IFFT (maby it should be within the IFFT module)
Steve
infuzion ·
Sorry, kind of hard to read in module form; much easier to read & slightly faster in Code form please.
mEnZI1 ·
Woo,Good work! that's great!
but I cant see any "e^iπ" in code?
dont a FFT need this?
and what about the EQ's freq in“mult”?
Thanks
Disco_Steve ·
I never really got round to making it good (ie testing it very thoroughly), sorry 🙁
the lack of e^i*pi*x is why the fft is fast 🙂
its a cleaver technique ,also remember that in a computer there is 'no such thing as complex numbers' so you have to have a complex stream and a real stream for every number.
if you do a 2 point fft then the e^(blar) is either a *1 or *-1 or *i or *-i so the maths gets turned into not change or a 'phase invert' or a 'channel swap' between the real and the imaginary parts.
(does that make any sense?)
so by using an fft length that is a power of two, and cutting that down into smaller powers of two using only 2 point ffts. the fft or ifft can be done with very large amounts of simple highly semetric computation, that thus can be made highly optimised and low cpu (this version isn't! it was my first and last attempt at making one because the cable hell had already reached all I could take, and it was only 8 point! the only way to do this is in code, and the only way to get the loops to work as needed is in asm, and my asm skills aren't hot enough.
if you make one, please send it my way 🙂
hope that helps?
Steve
kirkagur ·
nice ....
how do you make it 16 point?
mEnZI1 ·
Disco_Steve wrote: I never really got round to making it good (ie testing it very thoroughly), sorry 🙁
the lack of e^i*pi*x is why the fft is fast 🙂
its a cleaver technique ,also remember that in a computer there is 'no such thing as complex numbers' so you have to have a complex stream and a real stream for every number.
if you do a 2 point fft then the e^(blar) is either a *1 or *-1 or *i or *-i so the maths gets turned into not change or a 'phase invert' or a 'channel swap' between the real and the imaginary parts.
(does that make any sense?)
so by using an fft length that is a power of two, and cutting that down into smaller powers of two using only 2 point ffts. the fft or ifft can be done with very large amounts of simple highly semetric computation, that thus can be made highly optimised and low cpu (this version isn't! it was my first and last attempt at making one because the cable hell had already reached all I could take, and it was only 8 point! the only way to do this is in code, and the only way to get the loops to work as needed is in asm, and my asm skills aren't hot enough.
if you make one, please send it my way 🙂
hope that helps?
Steve
Oh,god! I actually understand this! thank U very much!
I think even if in code,its Still difficult. 🙁
I also came to try it!
Disco_Steve ·
any time
I'll have a look back at this at some point, when I'm not doing live sound till 3 in the morning for 12 days in a row!
sunsynth ·
Sounds like FUN! 😉 🙂
Wrote something here? To have a post removed or your name hidden, write to [email protected].