Forums > MaxMSP

question about ifft for a beginner

July 6, 2012 | 1:09 am

i can generate spectrums that have a similar fft to .wavs that i want to broadly emulate [noisy kind of audio] but when i invert them to play they seem to always end up as a couple of loud clicks at start and beginning and some very quiet fuzz in between. boring!

is creating fft in order to invert it a thankless task? i mean limited to things like sine waves?

i hope that makes sense :o if not maybe i cn explain some more…

July 6, 2012 | 6:01 am

Not completely sure of what you’re trying to do – maybe you might want to post an example…

Anyway, if you’re aware enough about how Fourier transforms work, have a look at this:


July 6, 2012 | 9:02 pm

e.g. if i do an fft of two sounds and find the average and ifft that it doen’t sound anything like the original soudsn. that’s to be expected right?

July 6, 2012 | 11:03 pm

let me try to rephrase that. i’m trying to make a set of sound files with a similar fft to the top left one here. however, whenever i make the desireed data and then apply ifft to it, i always get a signal that starts and ends with a very sharp peak, so that the sound is far too quiet for most of its length – just starting and beginning with a very loud click. this is not what was desired.

am i doing something wrong?

July 7, 2012 | 9:21 am

Frankly, I still don’t understand what you’re trying to do… simply cycling on a set of values and computing their ifft will give you an harmonic spectrum, whose fundamental is the fft frame rate. If you want to create more complex sounds, the Xavier Rodet’s paper I posted above explains a technique.

Of course I might be wrong, but are you sure you have a grasp of the maths behind the Fourier transform?

July 7, 2012 | 12:53 pm


no i don’t, exceptthat the idea is to find the sine wave frequencies that combine to make the wave. that’s not the point atm. i thought that ifft reverrted the application of fft – is that right?

the problem is that whenever i make data represtenting a frequency spectrum, and apply ifft to it, i seems to always get a waveform that starts and ends with a click and is very quiet in between. am i doing something wrong to always get that result?

not specific to max/msp :)

July 7, 2012 | 2:38 pm

well, that’s exactly the point… fft doesn’t "find the sine wave frequencies that combine to make the wave". it’s more complex than that… probably there are great online resources explaining how it works, but I got it when I read this book:
no joke, if you don’t have a great training in maths (which is my case) a children’s book is the best you can find! – and I can assure you, it contains everything you want to know.

July 7, 2012 | 9:12 pm

I you’d post a patch we could probably see whats wrong. But out of your description and lack of expertise I would guess that you did not care of the windowing. I never ever used fft~and ifft~, as dealing with the windowing is a pain.
Since the existence of pfft~ there are very rare occasions only for math professors who would still use these objects…

in short: use pfft~ and the world will shine in a nice spectrum again…


July 8, 2012 | 6:15 pm

ok, i’m gonna try pfft. there’s even a turorial on it 8)

i was not actually using max/msp, i just figured that here would be a cool / useful place to ask about fourier.

honestly i’m not ready to get to grips with the maths… if i can perform ifft so that not every signal that is returned is the same then i might.
what i’m trying to do is find out if spectrum analysis can be used to determine if some sound is "harsh" or discomforting. i am not sure if this might bear and interesting results? maybe spectrums that are low on noise??

July 8, 2012 | 8:12 pm

so i was talking with someone, and they say fft isn’t the way to go with this but: spectrograms.

where do i start? i want to devise a way of measuring the harshness of a recording. perhaps this will be certain frequencies [unpleasantness] perhaps the presence of noise. i dunno yet! but can anyone help me get started with spectrograms – i suppose i’d like to be able to export data so that i can run statistical tests on it??


July 8, 2012 | 10:25 pm

is there a spectrum analyzer i can export the results to .txt??

July 8, 2012 | 11:24 pm

you should look at the zsa suite of externals for audio analysis– they use the fft in a more sophisticated, perceptually oriented and musically meaningful manner

July 9, 2012 | 2:02 am


one thing which suggests i’m confusing myself, is that max/msp seems to want amp and *phase* as inputs, rather than amp and freq. if anyone understand why that might confuse me – why is that?

edit oh i can get the time/freq/amp data into a stats program, i’ve just got to figure out what to run on them ha.

July 9, 2012 | 2:57 am

that’s because the frequency is implied by the bin number or index out the right outlet of fftin– the actual frequency for a particular bin number can be calculated by dividing the number of bins into the 1/2 sample rate and then multiplying by the current bin index — sounds like you’ll have to massage your stats data so the frequency is represented as bin number. For your purposes the data could be represented as just an ordered list of amplitudes (or amp-phase pairs) with the first element (or pair) corresponding to bin 0.

July 9, 2012 | 3:33 am

right, thanks.

just to go on… i decided that what i want to do is run tests on a bunch of noise signals which i have rated for "harshness". i then want to create the harshest possible noise signal from that data… but i don’t want to use iift to create it. i want to use midi or something as a control voltage for a square wave oscillator.

is it possible to run an fft test to get an idea [ideally not just vaguely] what signal will be harshest, then create that signal using one square wave oscillator?

i’m kinda ahead of myself here – but any advice would be sweet :)

edit no wait i’m not sure i need fft anymore, because of the nature of what i’m rating… i’d just have several datasets of 0s and 1s, each with a harshness value, and then want to extrapolate from that.

July 9, 2012 | 4:05 am

if you have a look at the zsa descriptors there’s all sorts of analyses that can asssist in that, ie htere’s one called ‘brightness’ I think and ‘noisiness’ spectral richness, kurtosis etc that may correlate in some way to your idea of ‘harshness’. definitely worth looking at them to get a handle on what you want and how you can systematize a synthesis method or ‘predict’ an outcome according to your chosen criteria

July 9, 2012 | 4:57 am

I am not sure if harshness could be found with a spectral distribution alone. You would have to look in the spectrum for inharmonic content, and I think you should also look at the time domain, as the time structure adds to such a description. ZSA would be the best starting point, or set up a neural network and teach it harshness…;-)
This research could be the beginning of a big Ph.D. thesis…

To measure subjective descriptors involves other sciences like psychology on a high level as well…

But you said you want to create harshness with a square wave – you might be in a completely different world… I imagine metal techno kind of sounds… This would not involve any technical analysis, it would involve simply human experience with dinosaur analog synthesizers combined with harsh digital distortion methods…
There is much treatment out there in the world which could be learned how to tweak it to create the harshest sound imaginable – but thats a matter of taste…


July 9, 2012 | 5:48 am

"metal techno" haha ^_^

here’s some exmaples of square waves – i’m trying to get some people who are into harsh sounds to rate different sections for harshness…

ps i also timestretch noise ahaha ;)

July 9, 2012 | 7:39 am

so i deleted that mp3 because people were taking it seriously as a work of noise rather than a test of harshness… i;m gonna start asking about stats procedures on different forums now. physicsforums looks good… thanks for replies :)

July 11, 2012 | 11:40 pm

square waves… can anyone debug my patch / tell me if max/msp can do this?

i have a list of 0s and 1s – these are the square wave pattern. i then used excel to count the number of times a 1 or 0 repeated before the value changed to a 0 or 1 respectively.
so e.g.: 00110100011 becomes 221132

i am now trying to "play" that new data in max. make sense? but all i get is frank digital *noise* – when i know that the original square wave was tonnes richer. am i asking the program to do things it can’t, or have i set up the patch incorrectly?
the txt file that loads is that second data set i have created in excel :)

thanks for any more help.

July 12, 2012 | 9:03 am

I put something together– thought it would be easy (and probably is for someone cleverer than me), but turned out rather complicated– still doesn’t work perfectly but it’s a start. One thing you need to do is press the button twice to get the expected waveform, so something wrong with my message ordering. Basically it works by converting the text sequence of numbers into a list, which is then used to fill a wave table with either -1 or 1. the table is then looped through by a phasor. Make sure you enclose the number sequence in quotes (ie "11122225554347") or it wont work.

Ideally you’d have an antialiasing filter in there, otherwise it’s rather academic.
anyway hope it helps

– Pasted Max Patch, click to expand. –

July 13, 2012 | 6:47 pm

hmm, thanks terry, i’ll try that in a bit : . exciting!

atm i’m kinda working on creating the data in max/msp, just because excel only has about a million cells. what’s the longest txt file that max can load or create? anyway, this process is really slow atm – the patch i made is struggling a bit :( .

thanks for the help!

Viewing 22 posts - 1 through 22 (of 22 total)