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 <[email protected] >> <mailto:[email protected]>> 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/> >> >> >> _______________________________________________ >> [email protected] <mailto:[email protected]>mailing list >> UNSUBSCRIBE and account-management >> ->https://lists.puredata.info/listinfo/pd-list >
#N canvas 19 83 686 620 10; #X obj 142 176 tabplay~ wavetable; #N canvas 0 50 450 278 (subpatch) 0; #X array wavetable 131 float 2; #X coords 0 1 131 -1 128 100 1 0 0; #X restore 317 214 graph; #X obj 143 220 rfft~; #X obj 136 254 *~; #X obj 162 254 *~; #X obj 143 287 +~; #X obj 143 310 sqrt~; #N canvas 0 50 450 278 (subpatch) 0; #X array spectrum 128 float 2; #X coords 0 1 128 -1 128 100 1 0 0; #X restore 315 343 graph; #X obj 143 334 tabsend~ spectrum; #X obj 57 60 switch~ 128 1 1; #X obj 25 9 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 102 37 0; #X obj 102 15 loadbang; #X obj 25 29 t b b; #X obj 26 393 tabread spectrum; #X obj 26 415 tabwrite spectrum; #X msg 25 345 0; #X obj 25 367 t f f; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 2 0 3 1; #X connect 2 1 4 0; #X connect 2 1 4 1; #X connect 3 0 5 0; #X connect 4 0 5 1; #X connect 5 0 6 0; #X connect 6 0 8 0; #X connect 10 0 13 0; #X connect 11 0 9 0; #X connect 12 0 11 0; #X connect 13 0 16 0; #X connect 13 1 0 0; #X connect 13 1 9 0; #X connect 14 0 15 0; #X connect 16 0 17 0; #X connect 17 0 14 0; #X connect 17 1 15 1;
_______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
