#N canvas 684 22 477 699 10;
#X obj 197 454 route 1 2 3 4;
#N canvas 713 130 576 606 voice1 0;
#X obj 200 447 *~;
#X obj 215 409 vline~;
#X obj 142 157 mtof;
#X text 113 172 Hz;
#X obj 142 262 osc~;
#X floatatom 142 187 5 0 0 0 - - -;
#X obj 271 293 t f f;
#X obj 271 348 pack;
#X obj 298 318 * 0.5;
#X obj 271 269 / 127;
#X obj 215 159 t f f;
#X obj 271 243 f;
#X obj 142 58 inlet;
#X obj 142 89 unpack;
#X floatatom 215 132 5 0 0 0 - - -;
#X floatatom 142 130 5 0 0 0 - - -;
#X obj 200 479 throw~ voice;
#X obj 215 189 != 0;
#X obj 215 214 sel 0 1;
#X msg 271 374 \$1 10 \, \$2 10 50;
#X msg 215 364 0 20;
#X connect 0 0 16 0;
#X connect 1 0 0 1;
#X connect 2 0 5 0;
#X connect 4 0 0 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 6 1 8 0;
#X connect 7 0 19 0;
#X connect 8 0 7 1;
#X connect 9 0 6 0;
#X connect 10 0 17 0;
#X connect 10 1 11 1;
#X connect 11 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 15 0;
#X connect 13 1 14 0;
#X connect 14 0 10 0;
#X connect 15 0 2 0;
#X connect 17 0 18 0;
#X connect 18 0 20 0;
#X connect 18 1 11 0;
#X connect 19 0 1 0;
#X connect 20 0 1 0;
#X restore 197 547 pd voice1;
#X obj 197 341 notein;
#X obj 197 374 pack;
#N canvas 713 130 576 606 voice2 0;
#X obj 200 447 *~;
#X obj 215 409 vline~;
#X obj 142 157 mtof;
#X text 113 172 Hz;
#X obj 142 262 osc~;
#X floatatom 142 187 5 0 0 0 - - -;
#X obj 271 293 t f f;
#X obj 271 348 pack;
#X obj 298 318 * 0.5;
#X obj 271 269 / 127;
#X obj 215 159 t f f;
#X obj 271 243 f;
#X obj 215 189 == 0;
#X obj 215 214 sel 1 0;
#X obj 143 58 inlet;
#X obj 143 89 unpack;
#X floatatom 215 132 5 0 0 0 - - -;
#X floatatom 142 130 5 0 0 0 - - -;
#X obj 200 480 throw~ voice;
#X msg 271 374 \$1 10 \, \$2 10 50;
#X msg 215 364 0 20;
#X connect 0 0 18 0;
#X connect 1 0 0 1;
#X connect 2 0 5 0;
#X connect 4 0 0 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 6 1 8 0;
#X connect 7 0 19 0;
#X connect 8 0 7 1;
#X connect 9 0 6 0;
#X connect 10 0 12 0;
#X connect 10 1 11 1;
#X connect 11 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 20 0;
#X connect 13 1 11 0;
#X connect 14 0 15 0;
#X connect 15 0 17 0;
#X connect 15 1 16 0;
#X connect 16 0 10 0;
#X connect 17 0 2 0;
#X connect 19 0 1 0;
#X connect 20 0 1 0;
#X restore 215 523 pd voice2;
#N canvas 713 130 576 606 voice3 0;
#X obj 200 447 *~;
#X obj 215 409 vline~;
#X obj 142 157 mtof;
#X text 113 172 Hz;
#X obj 142 262 osc~;
#X floatatom 142 187 5 0 0 0 - - -;
#X obj 271 293 t f f;
#X obj 271 348 pack;
#X obj 298 318 * 0.5;
#X obj 271 269 / 127;
#X obj 215 159 t f f;
#X obj 271 243 f;
#X obj 215 189 == 0;
#X obj 215 214 sel 1 0;
#X obj 143 58 inlet;
#X obj 143 89 unpack;
#X floatatom 215 132 5 0 0 0 - - -;
#X floatatom 142 130 5 0 0 0 - - -;
#X obj 200 491 throw~ voice;
#X msg 271 374 \$1 10 \, \$2 10 50;
#X msg 215 364 0 20;
#X connect 0 0 18 0;
#X connect 1 0 0 1;
#X connect 2 0 5 0;
#X connect 4 0 0 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 6 1 8 0;
#X connect 7 0 19 0;
#X connect 8 0 7 1;
#X connect 9 0 6 0;
#X connect 10 0 12 0;
#X connect 10 1 11 1;
#X connect 11 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 20 0;
#X connect 13 1 11 0;
#X connect 14 0 15 0;
#X connect 15 0 17 0;
#X connect 15 1 16 0;
#X connect 16 0 10 0;
#X connect 17 0 2 0;
#X connect 19 0 1 0;
#X connect 20 0 1 0;
#X restore 234 502 pd voice3;
#N canvas 713 130 576 606 voice4 0;
#X obj 200 447 *~;
#X obj 215 409 vline~;
#X obj 142 157 mtof;
#X text 113 172 Hz;
#X obj 142 262 osc~;
#X floatatom 142 187 5 0 0 0 - - -;
#X obj 271 293 t f f;
#X obj 271 348 pack;
#X obj 298 318 * 0.5;
#X obj 271 269 / 127;
#X obj 215 159 t f f;
#X obj 271 243 f;
#X obj 215 189 == 0;
#X obj 215 214 sel 1 0;
#X obj 143 58 inlet;
#X obj 143 89 unpack;
#X floatatom 215 132 5 0 0 0 - - -;
#X floatatom 142 130 5 0 0 0 - - -;
#X obj 200 491 throw~ voice;
#X msg 215 364 0 20;
#X msg 271 374 \$1 10 \, \$2 10 50;
#X connect 0 0 18 0;
#X connect 1 0 0 1;
#X connect 2 0 5 0;
#X connect 4 0 0 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 6 1 8 0;
#X connect 7 0 20 0;
#X connect 8 0 7 1;
#X connect 9 0 6 0;
#X connect 10 0 12 0;
#X connect 10 1 11 1;
#X connect 11 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 19 0;
#X connect 13 1 11 0;
#X connect 14 0 15 0;
#X connect 15 0 17 0;
#X connect 15 1 16 0;
#X connect 16 0 10 0;
#X connect 17 0 2 0;
#X connect 19 0 1 0;
#X connect 20 0 1 0;
#X restore 253 479 pd voice4;
#X obj 139 531 print;
#X text 38 24 Agora é a hora de se divertir mesmo com um controlador
MIDI.;
#X obj 92 361 loadbang;
#X obj 147 595 catch~ voice;
#X obj 147 623 /~ 4;
#X obj 195 624 hsl 128 15 0 1 0 0 empty ganho empty -2 -6 0 10 -240877
-1 -1 9800 0;
#N canvas 232 59 524 385 ganho 0;
#X obj 306 217 *~;
#X obj 294 249 dac~;
#X obj 335 187 line~;
#X msg 335 161 \$1 10;
#X obj 335 135 pow 4;
#X obj 335 108 inlet;
#X obj 306 77 inlet~;
#X connect 0 0 1 0;
#X connect 0 0 1 1;
#X connect 2 0 0 1;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 6 0 0 0;
#X restore 147 651 pd ganho;
#X msg 92 386 \; pd dsp 1 \; ganho 0.9;
#X obj 197 425 pack f f f;
#X obj 197 399 poly 4 1;
#X text 41 49 Por enquanto \, só era possível uma única voz (como em
um sintetizador monofônico). Agora \, apresentamos o objeto [poly]
\, que nos permite diversas vozes (síntese polifônica).;
#X text 43 154 No patch abaixo \, temos quatro vozes \, cada uma corresponde
a um oscilador que está em um subpatch diferente.;
#X text 42 96 O primeiro argumento é o número de vozes que ele administra
e numera cada uma das vozes recebidas ordenadamente. Por isso é preciso
um [route] para rotear cada nota a um oscilador diferente.;
#X text 43 188 O segundo argumento é chamado de "voice stealing" \,
que substitui uma nota na ordem em que as vozes foram numeradas que.
Ou seja \, quando ligado (igual a 1) \, força o Note Off de uma nota
já pressionada quando você pressiona uma nova nota acima do número
de vozes permitido. Já se o "voice stealing" estiver desligado \, o
[poly] não deixa passar nenhuma nota se você já estiver tocando o máximo
de vozes que ele permite.;
#X connect 0 0 1 0;
#X connect 0 1 4 0;
#X connect 0 2 5 0;
#X connect 0 3 6 0;
#X connect 2 0 3 0;
#X connect 2 1 3 1;
#X connect 3 0 16 0;
#X connect 9 0 14 0;
#X connect 10 0 11 0;
#X connect 11 0 13 0;
#X connect 12 0 13 1;
#X connect 15 0 0 0;
#X connect 15 0 7 0;
#X connect 16 0 15 0;
#X connect 16 1 15 1;
#X connect 16 2 15 2;
