SynthMaker

8 Point Stream FFT and IFFT

Archive · 2009 10 old posts

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].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.