#N canvas 275 35 909 626 10;
#X obj 668 530 bng 20 250 50 0 empty empty empty 17 7 0 10 -241326
-1 -1;
#N canvas 790 22 443 326 sampler 0;
#X obj 253 242 table \$0-buffer;
#X obj 149 243 soundfiler;
#X obj 149 185 list append \$0-buffer;
#X obj 51 72 openpanel;
#X obj 51 95 list append \$0-buffer;
#X msg 51 119 read -resize \$1 \$2;
#X obj 198 94 loadbang;
#X msg 209 116 \; hz 1 \; grain 500 \; pd dsp 1;
#X obj 51 41 inlet;
#X msg 149 214 read -resize ../samples/bubul.wav \$1;
#X connect 2 0 9 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 0;
#X connect 6 0 7 0;
#X connect 6 0 2 0;
#X connect 8 0 3 0;
#X connect 9 0 1 0;
#X restore 668 556 pd sampler;
#X floatatom 646 198 6 0 0 0 - hz -;
#X obj 566 320 +~;
#X obj 618 315 samphold~;
#X obj 595 268 samphold~;
#X obj 565 270 *~;
#X obj 566 347 tabread4~ \$0-buffer;
#X obj 740 392 hsl 128 15 0 1 0 0 empty ganho empty -2 -8 0 10 -204786
-1 -1 0 1;
#N canvas 0 22 450 300 ganho 0;
#X obj 206 206 *~;
#X obj 225 175 line~;
#X msg 225 149 \$1 10;
#X obj 225 113 pow 4;
#X obj 190 245 dac~;
#X obj 226 60 inlet;
#X obj 177 60 inlet~;
#X connect 0 0 4 0;
#X connect 0 0 4 1;
#X connect 1 0 0 1;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 5 0 3 0;
#X connect 6 0 0 0;
#X restore 692 414 pd ganho;
#X obj 709 317 tof/breakpoints~ 100 50;
#X obj 692 380 *~;
#X obj 718 257 loadbang;
#X msg 718 281 0 0.25 1 0.5 1 0.25 0;
#X text 533 470 O sample já foi carregado automaticamente no subpatch
abaixo \, mas você pode escolher outro clicando no bang.;
#X obj 203 477 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X floatatom 67 354 6 0 0 0 - hz -;
#X obj 67 471 +~;
#X obj 67 438 *~;
#X obj 67 500 tabread4~ \$0-buffer;
#X obj 241 556 hsl 128 15 0 1 0 0 empty ganho empty -2 -8 0 10 -204786
-1 -1 0 1;
#N canvas 0 22 450 300 ganho 0;
#X obj 206 206 *~;
#X obj 225 175 line~;
#X msg 225 149 \$1 10;
#X obj 225 113 pow 4;
#X obj 190 245 dac~;
#X obj 226 60 inlet;
#X obj 177 60 inlet~;
#X connect 0 0 4 0;
#X connect 0 0 4 1;
#X connect 1 0 0 1;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 5 0 3 0;
#X connect 6 0 0 0;
#X restore 193 578 pd ganho;
#X text 44 354 Hz;
#X obj 208 487 /~ 2;
#X obj 208 510 sin~;
#X obj 193 544 *~;
#X text 245 495 Envelope;
#X text 652 179 Hz;
#X text 486 51 Outras descontinuidades (clicks) surgem quando ajustamos
o tamanho do grão e posição de leitura. Podemos evitar isso com o [samplhold~]
\, que só deixa um novo valor passar ao final do ciclo de um [phasor~].
;
#X text 497 128 O envelope abaixo é um ASR linear \, com o objeto [tof/breakpoints~]
;
#X obj 646 221 phasor~;
#X obj 67 378 phasor~;
#X text 42 20 Você deve ter escutado "clicks" no exemplo anterior \,
com o [line~] \, porque começar e parar de tocar em um ponto qualquer
do arquivo gera descontinuidades. Para evitar isso \, fazemos um envelope.
;
#X obj 336 431 samplerate~;
#X obj 336 458 / 1000;
#X obj 336 484 v sr_KHz;
#X obj 336 406 loadbang;
#X obj 161 384 expr~ $v1 * sr_KHz \; $v2 * sr_KHz;
#X floatatom 272 359 6 0 0 0 - - -;
#X floatatom 161 360 6 0 0 0 - grain -;
#X text 269 337 posição (ms);
#X text 161 337 grão (ms);
#X floatatom 565 198 6 0 0 0 - grain -;
#X floatatom 454 198 6 0 0 0 - grain -;
#X text 446 178 posição;
#X text 567 178 grão;
#X text 45 252 O tamanho do trecho em loop \, chamado "grão" \, é dado
em ms. A posição de início de leitura também. Ambos são convertidos
em amostras ao multiplicar pela taxa de amostragem em KHz.;
#X obj 454 223 expr~ $v1 * sr_KHz \; $v2 * sr_KHz;
#X text 44 177 Apesar de evitar clicks \, um envelope é sempre uma
modulação de amplitude. De modo que esse processamento introduz parciais
da forma característica de modulação de ampltidue \, em frequências
altas. Ou então um tremolo em frequências baixas. Minimizaremos isso
com "overlap" no próximo exemplo.;
#X text 43 79 Neste exemplo \, lemos em loop com um [phasor~] em uma
dada frequência \, e o mesmo [phasor~] controla um envelope que \,
no caso \, é a metade do período da função seno.;
#X text 43 127 Um grão pequeno \, lido com frequência alta \, pode
ser encarado como uma forma de onda \, e esse é um dos princípios de
Síntese Granular.;
#X connect 0 0 1 0;
#X connect 2 0 30 0;
#X connect 3 0 7 0;
#X connect 4 0 3 1;
#X connect 5 0 6 1;
#X connect 6 0 3 0;
#X connect 7 0 11 0;
#X connect 8 0 9 1;
#X connect 10 0 11 1;
#X connect 11 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 10 0;
#X connect 16 0 31 0;
#X connect 17 0 19 0;
#X connect 18 0 17 0;
#X connect 19 0 25 0;
#X connect 20 0 21 1;
#X connect 23 0 24 0;
#X connect 24 0 25 1;
#X connect 25 0 21 0;
#X connect 30 0 4 1;
#X connect 30 0 5 1;
#X connect 30 0 6 0;
#X connect 30 0 10 0;
#X connect 31 0 18 0;
#X connect 31 0 23 0;
#X connect 33 0 34 0;
#X connect 34 0 35 0;
#X connect 36 0 33 0;
#X connect 37 0 18 1;
#X connect 37 1 17 1;
#X connect 38 0 37 1;
#X connect 39 0 37 0;
#X connect 42 0 47 1;
#X connect 43 0 47 0;
#X connect 47 0 4 0;
#X connect 47 1 5 0;
