Hi Simon, On 04/08/16 09:54, Simon Iten wrote: > ah sorry, yes > > i want to read a wavetable, say 128 steps and calculate the gain structure to > aproximate this wavetable with sine waves. > the idea behind this is to get a different sound from wavetables, use low > resolution wavetables to get nice sounds (waldorf microwave xt) > > so for a saw wave i would want the following numbers. > > 1 0.5 0.3333 0.25 0.2 and so on… > > how to do this for an arbitrary input wavetable? > > i looked at the fft examples but it is not clear to me how i would do this > with a single wavetable (of known size)
You could do something like this with [rfft~], but you lose phase information which might be important depending on what you are doing (use fixed-width font to see diagram): "set appropriate block size, turn off dsp, bang to execute 1 block" | [switch~] [tabplay~ wavetable] | [rfft~ ] ^ ^ [*~] [*~] \ / [+~] | [sqrt~] | [tabsend~ spectrum] > or if there is a “simpler” (without fft) possibility that would be great. I don't think you'll get simpler than FFT here. As a bonus you can also get phase information (sinesum has all phases 0, cosinesum all phases pi/2, general wavetable can have arbitrary phases). You could use [rifft~] instead of sinesum to generate your wavetable, too. Note there may be some issues with normalization (fft->ifft has an amplitude gain equal to the blocksize, iirc). For a more advanced use of oneshot FFT and IFFT for wave tables, see my bandlimited project: https://mathr.co.uk/blog/2015-02-12_bandlimited_wavetables.html Claude -- https://mathr.co.uk _______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
