#N canvas 61 57 450 300 10; #X text 12 6 complex numbers \, dynamic wavetables and feedback.; #X text 12 24 (this patch requires creb and pdp.); #X text 13 66 1 dynamic wavetable synthesis; #X text 13 87 2 scanned synthesis; #N canvas 374 423 555 434 scan 1; #X text 14 10 Scanned synthesis is a sound synthesis method developped by Max Mathews et al. It is about dynamic wavetables \, where the wavetable is the result of 'scanning' the state space of some slowly moving (haptic) dynamic system.; #X text 15 77 I will use this idea in a more constrained framework \, namely a (non)linear state-space system with state represented by a (circular) vector of real or complex numbers.; #X text 13 137 This is the same framework that covers discrete filters and linear systems \, and their nonlinear versions \, mostly called recurrent neural networks. The big advantage of this stucture \, is that it is very well defined mathematically \, and can host the FFT/IFFT to bring more intuitive control parameters into the picture.; #X restore 242 87 pd scan; #N canvas 596 21 558 610 dynwav 1; #X text 14 9 dynamic wavetable syntesis: dynwav~; #X obj 170 444 dynwav~; #X obj 73 300 hsl 128 15 20 10000 1 1 empty empty empty -2 -6 0 8 -262144 -1 -1 7200 1; #X floatatom 70 327 5 0 0 0 - - -; #X obj 70 391 osc~; #X obj 122 326 bang~; #X msg 122 368 0.25; #X obj 272 329 hsl 128 15 20 10000 1 1 empty empty empty -2 -6 0 8 -262144 -1 -1 1800 1; #X floatatom 269 350 5 0 0 0 - - -; #X obj 269 372 phasor~; #X text 16 253 I.e.: a poor man's formant synth:; #X obj 122 347 spigot; #X obj 167 327 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X text 69 283 formants; #X text 292 312 pitch; #X text 190 327 sync; #X text 12 183 This object connects the rest of the framework \, which operate on periodic wavetables \, or their transforms (spectra) \, captured in dsp buffers \, to normal audio streams.; #X text 14 96 dynwav~ is an object from creb. It uses an incoming dsp buffer as a wavetable to be interpolated. This avoids having to deal with arrays to store the wavetable. dynwav~ additionally interpolates between the previous and last received wavetable \, to avoid clicks in the playback.; #X text 14 35 This technique is equivalent to wavetable synthesis \, with the exception that the wavetable changes gradually \, at a haptic rate.; #X obj 31 566 block~ 256; #X obj 169 500 outlet~; #X obj 169 472 vol~; #X floatatom 228 454 5 0 0 0 - - -; #X text 112 565 determines wavetable size \, and the time-frequency trade-off.; #X connect 1 0 21 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 1 0; #X connect 5 0 11 0; #X connect 6 0 4 1; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 1 1; #X connect 11 0 6 0; #X connect 12 0 11 1; #X connect 21 0 20 0; #X connect 22 0 21 1; #X restore 242 66 pd dynwav; #X obj 242 214 vol~; #X floatatom 284 189 5 0 0 0 - - -; #X obj 242 239 dac~; #X connect 5 0 6 0; #X connect 6 0 8 0; #X connect 6 0 8 1; #X connect 7 0 6 1;