#N canvas 832 348 427 436 10; #X obj 96 367 dac~; #N canvas 0 89 1019 449 analisa 1; #X obj 18 25 inlet~; #X obj 18 120 rfft~; #X obj 18 140 cyclone/cartopol~; #N canvas 0 50 450 250 (subpatch) 0; #X array \$0-espectro 4097 float 2; #X coords 0 0.2 4097 0 800 140 1 0 0; #X restore 174 266 graph; #X obj 82 25 block~ 8192; #X obj 18 159 /~ 8192; #N canvas 0 50 450 250 (subpatch) 0; #X array \$0-signal 1024 float 2; #X coords 0 1 1024 -1 800 140 1 0 0; #X restore 174 68 graph; #X obj 34 58 bang~; #X obj 36 200 bang~; #X text 15 265 O espectro do sinal consiste em n componentes cossenoidais: se n é par \, temos n harmônicos ímpares a partir da fundamental f/2. Se n é ímpar \, são n harmônicos com fundamental f., f 21 ; #X obj 34 80 tabwrite~ \$0-signal; #X obj 18 224 tabwrite~ \$0-espectro; #X connect 0 0 1 0; #X connect 0 0 10 0; #X connect 1 0 2 0; #X connect 1 1 2 1; #X connect 2 0 5 0; #X connect 5 0 11 0; #X connect 7 0 10 0; #X connect 8 0 11 0; #X restore 146 368 pd analisa; #X obj 96 310 /~; #X obj 96 186 phasor~; #X obj 147 283 cos~; #X obj 96 284 cos~; #X floatatom 37 159 5 0 0 0 n - -; #X obj 146 253 -~ 0.25; #X obj 97 253 -~ 0.25; #X obj 97 336 /~ 1; #X obj 96 225 *~ 1; #N canvas 0 89 457 371 blp~ 0; #X obj 59 39 inlet~; #X obj 59 307 outlet~; #X obj 59 62 ofelia d -s11 \; M.pha = 0 \; M.n = 50 \; M.c = 2*math.pi/44100 \; function M.perform(a) \; for i=1 \, 64 do \; newpha = M.pha+M.c*a[i] \; if math.abs(math.sin(M.pha))<1e-5 then \; if math.cos(M.pha)<0 and M.n%2==0 then \; a[i] = -1 \; else a[i]=1 \; end \; else a[i] = math.sin(M.n*M.pha)/math.sin(M.pha)/M.n \; end \; M.pha = newpha \; end \; return a \; end \;; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 243 190 pd blp~; #X text 202 252 converte para fase de seno, f 13; #X text 295 189 implementação alternativa em ofelia/Lua, f 15; #N canvas 0 201 159 143 gera 0; #X obj 25 27 loadbang; #X obj 25 50 metro 200; #X obj 25 73 f 1; #X obj 25 96 outlet; #X obj 106 74 + 1; #X obj 52 74 mod 50; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 2 0 5 0; #X connect 4 0 2 1; #X connect 5 0 4 0; #X restore 37 121 pd gera n; #X obj 96 160 nbx 5 14 20 20000 0 1 empty empty f 0 -8 0 10 -262144 -1 -1 400 256; #X text 37 19 Pulso com banda limitada (Band-Limited Pulse): Exemplo de síntese não-linear a partir da divisão de 2 senoides: f(t) = sen(n2πft)/sen(2πft) = soma de n parciais da forma cos((k2πft) para k=-(n-1)/2 \, -(n-1)/2+1 \, ...+(n-1)/2., f 51; #X obj 274 327 loadbang; #X msg 274 350 \; pd dsp 1; #X connect 2 0 9 0; #X connect 3 0 7 0; #X connect 3 0 10 0; #X connect 4 0 2 1; #X connect 5 0 2 0; #X connect 6 0 9 1; #X connect 6 0 10 1; #X connect 7 0 4 0; #X connect 8 0 5 0; #X connect 9 0 0 0; #X connect 9 0 1 0; #X connect 10 0 8 0; #X connect 11 0 0 1; #X connect 14 0 6 0; #X connect 15 0 3 0; #X connect 15 0 11 0; #X connect 17 0 18 0;