#N canvas 72 25 1011 661 12;
#X floatatom 46 55 9 0 0 0 - - -;
#N canvas 0 0 450 300 (subpatch) 0;
#X array array99 11 float 0;
#X coords 0 1 10 -1 250 200 1;
#X restore 603 153 graph;
#X obj 600 27 loadbang;
#X floatatom 46 12 5 0 135 0 - - -;
#X obj 46 32 mtof;
#X floatatom 80 380 0 0 0 0 - - -;
#N canvas 159 26 706 447 output 0;
#X obj 414 196 t b;
#X obj 414 134 f;
#X obj 414 73 inlet;
#X text 421 36 mute;
#X obj 414 227 f;
#X msg 521 218 0;
#X msg 414 104 bang;
#X obj 414 166 moses 1;
#X obj 521 187 t b f;
#X obj 486 143 moses 1;
#X obj 102 181 dbtorms;
#X obj 486 113 r master-lvl;
#X obj 102 52 r master-lvl;
#X obj 414 257 s master-lvl;
#X obj 26 222 inlet~;
#X obj 244 50 inlet;
#X text 244 22 level;
#X obj 244 122 s master-lvl;
#X msg 118 80 set \$1;
#X obj 118 109 outlet;
#X msg 262 78 \; pd dsp 1;
#X obj 102 238 line~;
#X obj 26 259 *~;
#X obj 26 295 dac~;
#X obj 102 210 pack 0 50;
#X text 24 195 audio;
#X text 114 135 show level;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 13 0;
#X connect 5 0 13 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 8 0;
#X connect 8 0 5 0;
#X connect 9 1 4 1;
#X connect 10 0 24 0;
#X connect 11 0 1 1;
#X connect 11 0 9 0;
#X connect 12 0 10 0;
#X connect 12 0 18 0;
#X connect 14 0 22 0;
#X connect 15 0 17 0;
#X connect 15 0 20 0;
#X connect 18 0 19 0;
#X connect 21 0 22 1;
#X connect 22 0 23 0;
#X connect 22 0 23 1;
#X connect 24 0 21 0;
#X restore 46 406 pd output;
#X msg 116 380 MUTE;
#X obj 200 293 *~;
#X msg 433 193 \$1 30;
#X obj 436 170 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 434 240 -~ 1;
#X obj 433 264 *~ -1;
#X obj 433 217 line~;
#X obj 46 294 *~;
#X msg 341 214 0;
#X msg 600 54 \; array99 resize 11 \; array99 0 0 0 -0.5 -0.5 1 -1
0.5 -1 0 0 0 \; pd dsp 1 \;;
#X obj 200 255 tabosc4~ array99;
#X text 501 149 tabosc4~;
#N canvas 371 25 645 661 osc~ 0;
#X obj 12 133 pack~;
#X obj 14 7 inlet~;
#X text 230 14 change block size;
#X msg 77 379 0;
#X obj 47 403 f;
#X obj 63 428 + 1;
#X obj 17 379 t a b;
#X obj 16 245 gemhead;
#X text 72 7 audio input;
#X obj 13 29 rfft~;
#X obj 13 51 *~;
#X obj 53 53 *~;
#X obj 171 72 block~ 4096 4;
#X obj 12 75 /~ 4096;
#X obj 12 95 log~;
#X obj 12 114 *~ 0.05;
#X obj 12 152 list prepend 0;
#X obj 12 173 s \$0-fft;
#X obj 273 189 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 273 207 t b b;
#X obj 272 251 until;
#X msg 272 228 2048;
#X msg 331 251 0;
#X obj 272 276 f;
#X obj 287 299 + 1;
#X obj 272 349 tabread \$0-fft;
#X obj 408 348 tabread \$0-fft-lop;
#X obj 272 399 +;
#X obj 272 443 tabwrite \$0-fft-lop;
#X obj 272 324 t f f f;
#X obj 296 183 bang~;
#X obj 272 421 / 8;
#X obj 409 376 * 7;
#X obj 77 494 tabread \$0-fft-lop;
#X obj 26 611 loadbang;
#X obj 47 451 t f f;
#X obj 72 578 l;
#X obj 22 224 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 71 547 t l b;
#X obj 18 659 curve 2;
#X obj 46 519 pack f f f;
#X floatatom 36 296 5 0 0 0 - - -;
#X floatatom 78 297 5 0 0 0 - - -;
#X obj 17 334 t a b;
#X floatatom 72 250 5 0 0 0 - - -;
#X floatatom 114 251 5 0 0 0 - - -;
#X obj 17 358 repeat 2048;
#X obj 14 277 translateXYZ -4 0 0;
#X obj 47 471 log;
#X obj 17 314 scaleXYZ 1.04 6 0;
#X msg 26 633 res 2;
#X obj 170 92 table \$0-fft 2048;
#X obj 170 112 table \$0-fft-lop 2048;
#X connect 0 0 16 0;
#X connect 1 0 9 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 0 35 0;
#X connect 5 0 4 1;
#X connect 6 0 39 0;
#X connect 6 1 4 0;
#X connect 7 0 47 0;
#X connect 9 0 10 0;
#X connect 9 0 10 1;
#X connect 9 1 11 0;
#X connect 9 1 11 1;
#X connect 10 0 13 0;
#X connect 11 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 0 0;
#X connect 16 0 17 0;
#X connect 18 0 19 0;
#X connect 19 0 21 0;
#X connect 19 1 22 0;
#X connect 20 0 23 0;
#X connect 21 0 20 0;
#X connect 22 0 23 1;
#X connect 23 0 24 0;
#X connect 23 0 29 0;
#X connect 24 0 23 1;
#X connect 25 0 27 0;
#X connect 26 0 32 0;
#X connect 27 0 31 0;
#X connect 29 0 25 0;
#X connect 29 1 26 0;
#X connect 29 2 28 1;
#X connect 30 0 19 0;
#X connect 31 0 28 0;
#X connect 32 0 27 1;
#X connect 33 0 40 1;
#X connect 34 0 50 0;
#X connect 35 0 48 0;
#X connect 35 1 33 0;
#X connect 36 0 39 2;
#X connect 37 0 7 0;
#X connect 38 0 36 1;
#X connect 38 1 36 0;
#X connect 40 0 38 0;
#X connect 40 0 39 1;
#X connect 41 0 49 1;
#X connect 42 0 49 2;
#X connect 43 0 46 0;
#X connect 43 1 3 0;
#X connect 44 0 47 1;
#X connect 45 0 47 2;
#X connect 46 0 6 0;
#X connect 47 0 49 0;
#X connect 48 0 40 0;
#X connect 49 0 43 0;
#X connect 50 0 39 0;
#X restore 55 356 pd osc~;
#X msg 605 385 reset \, create \, 1;
#X msg 611 407 0 \, destroy;
#X msg 46 73 \$1 100;
#X obj 46 96 line~;
#X obj 605 429 gemwin 20;
#X msg 172 77 cutoff \$1;
#X floatatom 172 14 5 0 0 0 - - -;
#X obj 172 34 mtof;
#X floatatom 185 58 9 0 0 0 - - -;
#X text 396 149 tabosc4i~;
#X obj 45 333 +~;
#X floatatom 286 52 5 0 0 0 - - -;
#X msg 286 75 upsample \$1;
#X msg 325 23 4;
#X msg 286 23 2;
#X obj 47 254 tabosci~ array99;
#X obj 214 353 oscillo~;
#X msg 364 23 8;
#X text 41 458 tabosc4c~ is a drop in remplacement for tabosc4~ \,
but offer an other 4 points interpolation. So \, in some case \, quality
is better than the standart interpolation. Moreover \, it can use table
size 2^n (and not 2^n+3) \, so you dan't have to copy the 1st 3 point
of the table at the end.;
#X text 764 387 <- draw spectrum with Gem;
#X text 43 543 You can also adjust an upsamplig factor \, and a cutoff
freq of the internal biquad. Upsample by 4 is ok most of the time.
To remove "all" spectrom folding \, main sampling rate should be 96000Hz
\, but it already gives good result at 44.1 or 48KHz...;
#X msg 171 110 cutoff 0;
#X text 255 110 no filter;
#X connect 0 0 22 0;
#X connect 2 0 16 0;
#X connect 3 0 4 0;
#X connect 4 0 0 0;
#X connect 5 0 6 1;
#X connect 6 0 5 0;
#X connect 7 0 6 2;
#X connect 8 0 30 0;
#X connect 9 0 13 0;
#X connect 10 0 9 0;
#X connect 11 0 12 0;
#X connect 12 0 14 1;
#X connect 13 0 11 0;
#X connect 13 0 8 1;
#X connect 14 0 30 0;
#X connect 15 0 17 1;
#X connect 15 0 35 1;
#X connect 17 0 8 0;
#X connect 20 0 24 0;
#X connect 21 0 24 0;
#X connect 22 0 23 0;
#X connect 23 0 17 0;
#X connect 23 0 35 0;
#X connect 25 0 35 0;
#X connect 26 0 27 0;
#X connect 27 0 28 0;
#X connect 27 0 25 0;
#X connect 30 0 6 0;
#X connect 30 0 19 0;
#X connect 30 0 36 0;
#X connect 31 0 32 0;
#X connect 32 0 35 0;
#X connect 33 0 31 0;
#X connect 34 0 31 0;
#X connect 35 0 14 0;
#X connect 37 0 31 0;
#X connect 41 0 35 0;