#N canvas 216 23 964 591 10;
#X obj 545 365 hsl 200 15 1 40 0 0 \$0-width \$0-width-set Sustain
-2 -8 1 12 -244004 -1 -1 3572 1;
#X obj 545 400 hsl 200 15 0.9 0.999 0 0 \$0-feedback \$0-feedback-set
Feedback -2 -8 1 12 -260899 -1 -1 19096 1;
#X obj 545 435 hsl 200 15 100 8000 0 0 \$0-cutoff \$0-cutoff-set Cutoff
-2 -8 1 12 -220731 -1 -1 14106 1;
#X obj 206 281 tgl 30 0 empty \$0-metro empty 17 7 0 10 -262130 -1
-1 1 1;
#X floatatom 259 305 5 0 0 0 - - -;
#X obj 262 280 hsl 128 15 500 3000 0 0 empty \$0-tempo Tempo -2 -8
0 10 -261234 -1 -1 12700 1;
#X obj 305 408 s \$0-chord;
#X obj 305 384 expr random (1 \, 8);
#X obj 206 361 trigger bang bang;
#N canvas 884 218 449 442 voice-1 0;
#X obj 169 377 throw~ \$0-out;
#X obj 183 185 r \$0-width;
#X obj 126 247 mtof;
#X obj 154 110 r \$0-chord;
#X obj 154 133 makefilename \$0-ch%d;
#X obj 61 109 del;
#X obj 61 82 random 500;
#X obj 61 49 inlet;
#X obj 286 319 *~;
#X obj 286 237 noise~;
#N canvas 615 137 410 311 feedback_&_Filter 0;
#X obj 121 27 inlet~;
#X obj 177 225 outlet~;
#X obj 121 187 delwrite~ \$0-delay 1000;
#X obj 38 62 vd~ \$0-delay;
#X obj 38 27 inlet~;
#X obj 49 124 block~ 1;
#X obj 198 78 r \$0-cutoff;
#X obj 177 110 lop~;
#X obj 233 107 r \$0-feedback;
#X obj 177 136 *~;
#X obj 211 154 sig~;
#X connect 0 0 2 0;
#X connect 3 0 7 0;
#X connect 4 0 3 0;
#X connect 6 0 7 1;
#X connect 7 0 9 0;
#X connect 8 0 10 0;
#X connect 9 0 2 0;
#X connect 9 0 1 0;
#X connect 10 0 9 1;
#X restore 169 347 pd feedback_&_Filter;
#N canvas 229 169 371 424 env 0;
#X obj 85 243 vline~;
#X obj 85 275 outlet~;
#X msg 73 204 0;
#X obj 85 141 > 0;
#X obj 85 164 sel 0 1;
#X obj 104 204 f;
#X obj 85 118 trigger float float;
#X obj 85 48 inlet;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 4 1 5 0;
#X connect 5 0 0 0;
#X connect 6 0 3 0;
#X connect 6 1 5 1;
#X connect 7 0 6 0;
#X restore 301 290 pd env;
#X obj 126 313 expr~ 1000 / $v1;
#X obj 126 220 makenote 1;
#X obj 61 166 expr $s2[0] \; random (50 \, 128);
#X obj 183 245 / 127;
#X connect 1 0 13 2;
#X connect 2 0 12 0;
#X connect 3 0 4 0;
#X connect 4 0 14 1;
#X connect 5 0 14 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 8 0 10 1;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X connect 11 0 8 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 13 1 15 0;
#X connect 14 0 13 0;
#X connect 14 1 13 1;
#X connect 15 0 11 0;
#X restore 222 400 pd voice-1;
#X obj 206 327 metro;
#N canvas 0 22 444 373 init 0;
#X obj 55 59 \$0;
#X obj 55 33 loadbang;
#X msg 55 84 \; \$1-metro 1 \; \$1-tempo 3000 \; \$1-cutoff-set 5700
\; \$1-feedback-set 0.995 \; \$1-width-set 8 \; \$1-ch1 0 40 47 52
56 59 64 \; \$1-ch2 0 43 47 50 55 62 67 \; \$1-ch3 0 45 52 57 60 64
69 \; \$1-ch4 0 42 49 54 57 61 66 \; \$1-ch5 0 40 47 54 59 62 66 \;
\$1-ch6 0 44 49 56 61 65 68 \; \$1-ch7 0 38 41 45 50 57 62 \; \$1-ch8
0 35 42 47 50 54 59 \; pd dsp 1;
#X obj 247 92 table \$0-ch1 6;
#X obj 247 114 table \$0-ch2 6;
#X obj 247 138 table \$0-ch3 6;
#X obj 247 160 table \$0-ch4 6;
#X obj 247 184 table \$0-ch5 6;
#X obj 247 206 table \$0-ch6 6;
#X obj 247 230 table \$0-ch7 6;
#X obj 247 252 table \$0-ch8 6;
#X connect 0 0 2 0;
#X connect 1 0 0 0;
#X restore 344 327 pd init \; tables;
#N canvas 302 23 449 442 voice-2 0;
#X obj 169 377 throw~ \$0-out;
#X obj 183 185 r \$0-width;
#X obj 126 247 mtof;
#X obj 154 110 r \$0-chord;
#X obj 154 133 makefilename \$0-ch%d;
#X obj 61 109 del;
#X obj 61 82 random 500;
#X obj 61 49 inlet;
#X obj 286 319 *~;
#X obj 286 237 noise~;
#N canvas 615 137 410 311 feedback_&_Filter 0;
#X obj 121 27 inlet~;
#X obj 177 225 outlet~;
#X obj 38 27 inlet~;
#X obj 49 124 block~ 1;
#X obj 198 78 r \$0-cutoff;
#X obj 177 110 lop~;
#X obj 233 107 r \$0-feedback;
#X obj 177 136 *~;
#X obj 211 154 sig~;
#X obj 121 187 delwrite~ \$0-delay2 1000;
#X obj 38 62 vd~ \$0-delay2;
#X connect 0 0 9 0;
#X connect 2 0 10 0;
#X connect 4 0 5 1;
#X connect 5 0 7 0;
#X connect 6 0 8 0;
#X connect 7 0 1 0;
#X connect 7 0 9 0;
#X connect 8 0 7 1;
#X connect 10 0 5 0;
#X restore 169 347 pd feedback_&_Filter;
#N canvas 229 169 371 424 env 0;
#X obj 85 243 vline~;
#X obj 85 275 outlet~;
#X msg 73 204 0;
#X obj 85 141 > 0;
#X obj 85 164 sel 0 1;
#X obj 104 204 f;
#X obj 85 118 trigger float float;
#X obj 85 48 inlet;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 4 1 5 0;
#X connect 5 0 0 0;
#X connect 6 0 3 0;
#X connect 6 1 5 1;
#X connect 7 0 6 0;
#X restore 301 290 pd env;
#X obj 126 313 expr~ 1000 / $v1;
#X obj 126 220 makenote 1;
#X obj 183 245 / 127;
#X obj 61 166 expr $s2[1] \; random (50 \, 128);
#X connect 1 0 13 2;
#X connect 2 0 12 0;
#X connect 3 0 4 0;
#X connect 4 0 15 1;
#X connect 5 0 15 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 8 0 10 1;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X connect 11 0 8 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 13 1 14 0;
#X connect 14 0 11 0;
#X connect 15 0 13 0;
#X connect 15 1 13 1;
#X restore 217 425 pd voice-2;
#N canvas 302 23 449 442 voice-3 0;
#X obj 169 377 throw~ \$0-out;
#X obj 183 185 r \$0-width;
#X obj 126 247 mtof;
#X obj 154 110 r \$0-chord;
#X obj 154 133 makefilename \$0-ch%d;
#X obj 61 109 del;
#X obj 61 82 random 500;
#X obj 61 49 inlet;
#X obj 286 319 *~;
#X obj 286 237 noise~;
#N canvas 615 137 410 311 feedback_&_Filter 0;
#X obj 121 27 inlet~;
#X obj 177 225 outlet~;
#X obj 38 27 inlet~;
#X obj 49 124 block~ 1;
#X obj 198 78 r \$0-cutoff;
#X obj 177 110 lop~;
#X obj 233 107 r \$0-feedback;
#X obj 177 136 *~;
#X obj 211 154 sig~;
#X obj 121 187 delwrite~ \$0-delay3 1000;
#X obj 38 62 vd~ \$0-delay3;
#X connect 0 0 9 0;
#X connect 2 0 10 0;
#X connect 4 0 5 1;
#X connect 5 0 7 0;
#X connect 6 0 8 0;
#X connect 7 0 1 0;
#X connect 7 0 9 0;
#X connect 8 0 7 1;
#X connect 10 0 5 0;
#X restore 169 347 pd feedback_&_Filter;
#N canvas 229 169 371 424 env 0;
#X obj 85 243 vline~;
#X obj 85 275 outlet~;
#X msg 73 204 0;
#X obj 85 141 > 0;
#X obj 85 164 sel 0 1;
#X obj 104 204 f;
#X obj 85 118 trigger float float;
#X obj 85 48 inlet;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 4 1 5 0;
#X connect 5 0 0 0;
#X connect 6 0 3 0;
#X connect 6 1 5 1;
#X connect 7 0 6 0;
#X restore 301 290 pd env;
#X obj 126 313 expr~ 1000 / $v1;
#X obj 126 220 makenote 1;
#X obj 183 245 / 127;
#X obj 61 166 expr $s2[2] \; random (50 \, 128);
#X connect 1 0 13 2;
#X connect 2 0 12 0;
#X connect 3 0 4 0;
#X connect 4 0 15 1;
#X connect 5 0 15 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 8 0 10 1;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X connect 11 0 8 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 13 1 14 0;
#X connect 14 0 11 0;
#X connect 15 0 13 0;
#X connect 15 1 13 1;
#X restore 206 448 pd voice-3;
#N canvas 302 23 449 442 voice-4 0;
#X obj 169 377 throw~ \$0-out;
#X obj 183 185 r \$0-width;
#X obj 126 247 mtof;
#X obj 154 110 r \$0-chord;
#X obj 154 133 makefilename \$0-ch%d;
#X obj 61 109 del;
#X obj 61 82 random 500;
#X obj 61 49 inlet;
#X obj 286 319 *~;
#X obj 286 237 noise~;
#N canvas 615 137 410 311 feedback_&_Filter 0;
#X obj 121 27 inlet~;
#X obj 177 225 outlet~;
#X obj 38 27 inlet~;
#X obj 49 124 block~ 1;
#X obj 198 78 r \$0-cutoff;
#X obj 177 110 lop~;
#X obj 233 107 r \$0-feedback;
#X obj 177 136 *~;
#X obj 211 154 sig~;
#X obj 38 62 vd~ \$0-delay4;
#X obj 121 187 delwrite~ \$0-delay4 1000;
#X connect 0 0 10 0;
#X connect 2 0 9 0;
#X connect 4 0 5 1;
#X connect 5 0 7 0;
#X connect 6 0 8 0;
#X connect 7 0 1 0;
#X connect 7 0 10 0;
#X connect 8 0 7 1;
#X connect 9 0 5 0;
#X restore 169 347 pd feedback_&_Filter;
#N canvas 229 169 371 424 env 0;
#X obj 85 243 vline~;
#X obj 85 275 outlet~;
#X msg 73 204 0;
#X obj 85 141 > 0;
#X obj 85 164 sel 0 1;
#X obj 104 204 f;
#X obj 85 118 trigger float float;
#X obj 85 48 inlet;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 4 1 5 0;
#X connect 5 0 0 0;
#X connect 6 0 3 0;
#X connect 6 1 5 1;
#X connect 7 0 6 0;
#X restore 301 290 pd env;
#X obj 126 313 expr~ 1000 / $v1;
#X obj 126 220 makenote 1;
#X obj 183 245 / 127;
#X obj 61 166 expr $s2[3] \; random (50 \, 128);
#X connect 1 0 13 2;
#X connect 2 0 12 0;
#X connect 3 0 4 0;
#X connect 4 0 15 1;
#X connect 5 0 15 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 8 0 10 1;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X connect 11 0 8 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 13 1 14 0;
#X connect 14 0 11 0;
#X connect 15 0 13 0;
#X connect 15 1 13 1;
#X restore 196 472 pd voice-4;
#N canvas 302 23 449 442 voice-5 0;
#X obj 169 377 throw~ \$0-out;
#X obj 183 185 r \$0-width;
#X obj 126 247 mtof;
#X obj 154 110 r \$0-chord;
#X obj 154 133 makefilename \$0-ch%d;
#X obj 61 109 del;
#X obj 61 82 random 500;
#X obj 61 49 inlet;
#X obj 286 319 *~;
#X obj 286 237 noise~;
#N canvas 615 137 410 311 feedback_&_Filter 0;
#X obj 121 27 inlet~;
#X obj 177 225 outlet~;
#X obj 38 27 inlet~;
#X obj 49 124 block~ 1;
#X obj 198 78 r \$0-cutoff;
#X obj 177 110 lop~;
#X obj 233 107 r \$0-feedback;
#X obj 177 136 *~;
#X obj 211 154 sig~;
#X obj 38 62 vd~ \$0-delay5;
#X obj 121 187 delwrite~ \$0-delay5 1000;
#X connect 0 0 10 0;
#X connect 2 0 9 0;
#X connect 4 0 5 1;
#X connect 5 0 7 0;
#X connect 6 0 8 0;
#X connect 7 0 1 0;
#X connect 7 0 10 0;
#X connect 8 0 7 1;
#X connect 9 0 5 0;
#X restore 169 347 pd feedback_&_Filter;
#N canvas 229 169 371 424 env 0;
#X obj 85 243 vline~;
#X obj 85 275 outlet~;
#X msg 73 204 0;
#X obj 85 141 > 0;
#X obj 85 164 sel 0 1;
#X obj 104 204 f;
#X obj 85 118 trigger float float;
#X obj 85 48 inlet;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 4 1 5 0;
#X connect 5 0 0 0;
#X connect 6 0 3 0;
#X connect 6 1 5 1;
#X connect 7 0 6 0;
#X restore 301 290 pd env;
#X obj 126 313 expr~ 1000 / $v1;
#X obj 126 220 makenote 1;
#X obj 183 245 / 127;
#X obj 61 166 expr $s2[4] \; random (50 \, 128);
#X connect 1 0 13 2;
#X connect 2 0 12 0;
#X connect 3 0 4 0;
#X connect 4 0 15 1;
#X connect 5 0 15 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 8 0 10 1;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X connect 11 0 8 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 13 1 14 0;
#X connect 14 0 11 0;
#X connect 15 0 13 0;
#X connect 15 1 13 1;
#X restore 184 493 pd voice-5;
#N canvas 302 23 449 442 voice-6 0;
#X obj 169 377 throw~ \$0-out;
#X obj 183 185 r \$0-width;
#X obj 126 247 mtof;
#X obj 154 110 r \$0-chord;
#X obj 154 133 makefilename \$0-ch%d;
#X obj 61 109 del;
#X obj 61 82 random 500;
#X obj 61 49 inlet;
#X obj 286 319 *~;
#X obj 286 237 noise~;
#N canvas 615 137 410 311 feedback_&_Filter 0;
#X obj 121 27 inlet~;
#X obj 177 225 outlet~;
#X obj 38 27 inlet~;
#X obj 49 124 block~ 1;
#X obj 198 78 r \$0-cutoff;
#X obj 177 110 lop~;
#X obj 233 107 r \$0-feedback;
#X obj 177 136 *~;
#X obj 211 154 sig~;
#X obj 38 62 vd~ \$0-delay6;
#X obj 121 187 delwrite~ \$0-delay6 1000;
#X connect 0 0 10 0;
#X connect 2 0 9 0;
#X connect 4 0 5 1;
#X connect 5 0 7 0;
#X connect 6 0 8 0;
#X connect 7 0 1 0;
#X connect 7 0 10 0;
#X connect 8 0 7 1;
#X connect 9 0 5 0;
#X restore 169 347 pd feedback_&_Filter;
#N canvas 229 169 371 424 env 0;
#X obj 85 243 vline~;
#X obj 85 275 outlet~;
#X msg 73 204 0;
#X obj 85 141 > 0;
#X obj 85 164 sel 0 1;
#X obj 104 204 f;
#X obj 85 118 trigger float float;
#X obj 85 48 inlet;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 4 1 5 0;
#X connect 5 0 0 0;
#X connect 6 0 3 0;
#X connect 6 1 5 1;
#X connect 7 0 6 0;
#X restore 301 290 pd env;
#X obj 126 313 expr~ 1000 / $v1;
#X obj 126 220 makenote 1;
#X obj 183 245 / 127;
#X obj 61 166 expr $s2[5] \; random (50 \, 128);
#X connect 1 0 13 2;
#X connect 2 0 12 0;
#X connect 3 0 4 0;
#X connect 4 0 15 1;
#X connect 5 0 15 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 8 0 10 1;
#X connect 9 0 8 0;
#X connect 10 0 0 0;
#X connect 11 0 8 1;
#X connect 12 0 10 0;
#X connect 13 0 2 0;
#X connect 13 1 14 0;
#X connect 14 0 11 0;
#X connect 15 0 13 0;
#X connect 15 1 13 1;
#X restore 171 515 pd voice-6;
#X obj 316 442 catch~ \$0-out;
#X obj 316 466 tanh~;
#X obj 316 492 output~;
#X text 112 32 A técnica de Karplus-Strong é um tipo de Waveguide Synthesis
que pode ser usada para simular o som de uma corda percutida ou tocada
por um plectro (palheta). Um exemplo seria o som de um cravo.;
#X text 112 96 "Pluck" é o termo em inglês para tocar com um plectro
\, e tem sido usado como nome de módulos de Karplus Strong \, como
no Csound e Supercollider. Mas a técnica de Karplus-Strong também pode
ser usada para gerar outros tipo de som \, como alguns tipos de percussão.
;
#X text 113 175 Vimos que a Karplus-Strong é basicamente um ruído branco
passando por um Filtro de Pente e também um Passa Baixa. Ou seja \,
é um exemplo claro de um princípio de Síntese Subtrativa \, que se
baseia em filtragem de sinal.;
#X text 506 39 Todavia \, pode também ser classificada como um algoritmo
de modificação de "wavetable" \, princípio da Waveguide Synthesis.
Por sua vez \, Waveguide Synthesis também é um tipo de Síntese por
Modelagem Física (Physical Modeling Synthesis).;
#X text 504 117 ============================================================
;
#X text 515 238 De resto \, não temos nada de novo. Os parâmetros de
controle são: Sustain (tempo do envelope) \, Feedback (do Comb Filter)
e Cutoff (do Passa Baixa).;
#X text 513 159 Abaixo temos um patch que é inicializado com 8 "acordes"
(formados por 6 vozes) armazenados em tabelas. O [metro] sorteia um
acorde e aciona 6 vozes de Karplus-Strong (abra os subpatches) \, sendo
que cada uma recebe um voz do acorde. Cada nota é atacada também com
um delay aleatóreo.;
#X connect 3 0 10 0;
#X connect 4 0 10 1;
#X connect 5 0 4 0;
#X connect 7 0 6 0;
#X connect 8 0 9 0;
#X connect 8 0 12 0;
#X connect 8 0 13 0;
#X connect 8 0 14 0;
#X connect 8 0 15 0;
#X connect 8 0 16 0;
#X connect 8 1 7 0;
#X connect 10 0 8 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 18 0 19 1;
