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

Reply via email to