[PD] sinesum inverse

Claude Heiland-Allen claude at mathr.co.uk
Fri Aug 5 00:04:45 CEST 2016


Hi Simon, list,

On 04/08/16 22:51, Simon Iten wrote:
> hi claude,
> 
> your bandlimited project works/sounds great! very nice sounds from handdrawn waves.

thanks!

> 
> however i am having trouble getting your example to work. probably just 
> stupidity from my side.
> 
> i suppose i don’t understand your:
> 
>> "set appropriate block size, turn off dsp, bang to execute 1 block”
> 
> message. if you find the time, can you have a look at it?

sure, just a [loadbang]--"0"--[switch~] - this turns off dsp for the
canvas (so you might want to put it all in a subpatch unless you're
using it as an abstraction).  see attached, works for me

> 
> do i not need to run a bang into tabplay in this special one block send scenario?
> 
> with my patch i get “kind" of the right thing.
> 
> 1) the table “spectrum” only updates once i click into the table (after i hit 
> the bang).

mm, seems to be a Pd bug or other infelicity.  the attached includes a
workaround using [tabwrite] which updates the GUI

> 2) i get only 64 values, so i guess my blocksize is still 64?

no, it's that for real signals the second half of the rfft~ output is
symmetric to the first, so Pd sets it to 0 and ignores it in rifft~ to
avoid confusion.

> 3) if i send a bang to switch~ when dsp is off, i get an error on the console:
> 
> bang to block~ or on-state switch~ has no effect.

you have to switch it off with "0" first, and have global dsp on (afaik).

> 
> 
> 
> cheers

hth,


Claude
-- 
https://mathr.co.uk

> 
> 
> 
> 
> 
>> On 04 Aug 2016, at 18:01, Claude Heiland-Allen <claude at mathr.co.uk 
>> <mailto:claude at mathr.co.uk>> wrote:
>>
>> 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 <https://mathr.co.uk/>
>>
>>
>> _______________________________________________
>> Pd-list at lists.iem.at <mailto:Pd-list at lists.iem.at>mailing list
>> UNSUBSCRIBE and account-management ->https://lists.puredata.info/listinfo/pd-list
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: wavetablefft2.pd
Type: text/x-puredata
Size: 1121 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20160804/3fd7fee3/attachment.bin>


More information about the Pd-list mailing list