sine waves from FFT analysis

oolfur's icon

hi board

could anyone direct me into the right direction with this;

i want to analyze the spectral components of a signal, and resynthesize it with a fft object - but be able to decide how many sinewave components are used to reconstruct the original signal!

something like reducing the "resolution" of the resynthesis. i'd like to hear a signal represented by 2 up to lets say 250 sine waves...

any ideas?

oolfur's icon

ehm... maybe this is a little unclear...

what i want is a patch that can represent a signal in variable numbers of sinewaves.

how would a wookiee growl sound using only 3 sinewaves to resynthesize it? what would it sound like with 250 sinewave components?

Tim Lloyd's icon

Have you seen the forbidden-planet patch in the examples folder? It sounds like you could do what you want with a few adjustments of that patch. It sounds like the same concept to me. If you want to re-synthesize with only 250 sine waves, then you need to decide which 250 to let pass, which is essentially equalization.

oolfur's icon

cool, ill check that out!

this however woul not be equalization, because the possible sine waves would always be spread evenly over the spectrum. i don't want to simply x out certain frequencies (bands)

seejayjames's icon

[oscbank~] might also be worth checking into, if you're OK with its frequency spread limitations. Otherwise you could use [bpatcher] or [poly~] with as many instances as you want, one cycle~ in each, and generate the frequencies and amplitudes from them. With the right scale factor *~ available to each, you can easily send a fundamental frequency and know that all your "partials" (of whatever scale factor you want) will relate to the original.

I think Wookies use some square waves too...as you know, they're kind of rough around the edges :)

mesa.elech/tele's icon

this is sdif based but might help you get some ideas.
[sinusoids~] and [SDIF-buffer]+[SDIF-tuples] will do what you described,
given that you have analysis files first (.sdif) by Spear or something alike.

oolfur's icon

apparently miller puckettes fiddle~ gives me exactly the sinusoidal components i need!!

thanks for the help.

-klive

mzed's icon

The iana~ object is what you want:

Too bad it's not free.

mz

oolfur's icon

this is why the pure-data community often makes me a lot happier. it does not make sense to me that people actually sell externals for max.