#N canvas 216 29 900 615 10;
#X obj 142 254 loadbang;
#X obj 142 306 seq;
#X obj 525 316 pgmin;
#X obj 519 287 bendin;
#X obj 513 349 touchin;
#X obj 490 379 polytouchin;
#X obj 586 466 midiin;
#X obj 611 557 sysexin;
#X obj 564 230 noteout;
#X obj 564 259 ctlout;
#X obj 564 287 bendout;
#X obj 565 349 touchout;
#X obj 565 379 polytouchout;
#X obj 631 466 midiout;
#X obj 565 317 pgmout;
#X obj 519 229 notein;
#X obj 525 259 ctlin;
#X text 47 31 O objeto [seq] nos permite ler uma sequência MIDI no
Pd. Porém ele envia mensagens MIDI "cruas" \, que significa que não
estão separadas em tipos diferentes de mensagens.;
#X obj 91 318 bng 15 250 50 0 empty empty empty 17 7 0 10 -228856 -1
-1;
#X obj 157 339 spigot;
#X obj 190 314 tgl 15 0 empty loop empty 17 7 0 10 -228856 -1 -1 1
1;
#X text 208 313 loop;
#X obj 142 384 midiparse;
#N canvas 588 58 491 582 voice1 0;
#X obj 200 447 *~;
#X obj 215 409 vline~;
#X obj 105 242 mtof;
#X floatatom 105 272 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 110 68 inlet;
#X floatatom 215 132 5 0 0 0 - - -;
#X floatatom 105 215 5 0 0 0 - - -;
#X obj 200 479 outlet~;
#X msg 215 364 0 10;
#X msg 271 374 \$1 10 \, \$2 40 10;
#X obj 105 298 phasor~;
#X obj 156 282 *~ 0.5;
#X obj 156 306 +~ 0.5;
#X obj 105 335 triangle~;
#X obj 156 258 osc~ 0.75;
#X obj 110 99 unpack float float;
#X obj 215 189 != 0;
#X obj 215 214 sel 0 1;
#X connect 0 0 13 0;
#X connect 1 0 0 1;
#X connect 2 0 3 0;
#X connect 3 0 16 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 5 0 15 0;
#X connect 6 0 5 1;
#X connect 7 0 4 0;
#X connect 8 0 22 0;
#X connect 8 1 9 1;
#X connect 9 0 7 0;
#X connect 10 0 21 0;
#X connect 11 0 8 0;
#X connect 12 0 2 0;
#X connect 14 0 1 0;
#X connect 15 0 1 0;
#X connect 16 0 19 0;
#X connect 17 0 18 0;
#X connect 18 0 19 1;
#X connect 19 0 0 0;
#X connect 20 0 17 0;
#X connect 21 0 12 0;
#X connect 21 1 11 0;
#X connect 22 0 23 0;
#X connect 23 0 14 0;
#X connect 23 1 9 0;
#X restore 104 508 pd voice1;
#N canvas 903 78 463 550 voice2 0;
#X obj 200 447 *~;
#X obj 215 409 vline~;
#X obj 103 242 mtof;
#X floatatom 103 272 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 110 58 inlet;
#X floatatom 215 132 5 0 0 0 - - -;
#X floatatom 103 215 5 0 0 0 - - -;
#X obj 200 480 outlet~;
#X msg 271 374 \$1 10 \, \$2 40 10;
#X msg 215 364 0 10;
#X obj 103 298 phasor~;
#X obj 154 307 +~ 0.5;
#X obj 103 335 triangle~;
#X obj 154 283 *~ 0.25;
#X obj 154 259 osc~ 0.25;
#X obj 110 89 unpack float float;
#X obj 215 214 sel 0 1;
#X obj 215 189 != 0;
#X connect 0 0 13 0;
#X connect 1 0 0 1;
#X connect 2 0 3 0;
#X connect 3 0 16 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 5 0 14 0;
#X connect 6 0 5 1;
#X connect 7 0 4 0;
#X connect 8 0 23 0;
#X connect 8 1 9 1;
#X connect 9 0 7 0;
#X connect 10 0 21 0;
#X connect 11 0 8 0;
#X connect 12 0 2 0;
#X connect 14 0 1 0;
#X connect 15 0 1 0;
#X connect 16 0 18 0;
#X connect 17 0 18 1;
#X connect 18 0 0 0;
#X connect 19 0 17 0;
#X connect 20 0 19 0;
#X connect 21 0 12 0;
#X connect 21 1 11 0;
#X connect 22 0 15 0;
#X connect 22 1 9 0;
#X connect 23 0 22 0;
#X restore 167 508 pd voice2;
#X obj 142 472 route 1 2;
#X obj 142 417 poly 2 1;
#X obj 196 542 hsl 128 15 0 1 0 0 empty ganho empty -2 -6 0 10 -240877
-1 -1 10160 0;
#N canvas 232 59 419 353 output 0;
#X obj 146 200 *~;
#X obj 205 150 line~;
#X msg 205 124 \$1 10;
#X obj 205 98 pow 4;
#X obj 205 61 inlet;
#X obj 146 60 inlet~;
#X obj 89 201 *~;
#X obj 89 61 inlet~;
#X obj 105 282 dac~;
#X obj 89 101 /~ 2;
#X obj 146 99 /~ 2;
#N canvas 0 22 450 300 panning 0;
#X obj 68 176 pansig~;
#X obj 190 179 pansig~;
#X obj 133 223 +~;
#X obj 188 221 +~;
#X obj 229 106 osc~ 0.1;
#X obj 107 139 *~ 0.5;
#X obj 229 140 *~ 0.5;
#X obj 274 45 loadbang;
#X obj 68 19 inlet~;
#X obj 190 20 inlet~;
#X obj 188 261 outlet~;
#X obj 133 261 outlet~;
#X msg 152 77 0;
#X obj 107 103 osc~ 0.1;
#X msg 274 78 0.5;
#X connect 0 0 2 0;
#X connect 0 1 3 0;
#X connect 1 0 2 1;
#X connect 1 1 3 1;
#X connect 2 0 11 0;
#X connect 3 0 10 0;
#X connect 4 0 6 0;
#X connect 5 0 0 1;
#X connect 6 0 1 1;
#X connect 7 0 14 0;
#X connect 7 0 12 0;
#X connect 8 0 0 0;
#X connect 9 0 1 0;
#X connect 12 0 13 1;
#X connect 13 0 5 0;
#X connect 14 0 4 1;
#X restore 89 245 pd panning;
#X connect 0 0 11 1;
#X connect 1 0 0 1;
#X connect 1 0 6 1;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 10 0;
#X connect 6 0 11 0;
#X connect 7 0 9 0;
#X connect 9 0 6 0;
#X connect 10 0 0 0;
#X connect 11 0 8 0;
#X connect 11 1 8 1;
#X restore 142 569 pd output;
#X obj 142 443 pack f f f;
#X obj 260 379 loadbang;
#X text 49 78 Usamos o objeto [midiparse] para ler e rotear as mensagens
cruas. Abra seu help para mais detalhes.;
#X obj 586 84 mrpeach/midifile;
#X text 52 181 O [seq] também permite que você grave sequências MIDI
a partir do seu controlador. Abra o help para mais detalhes.;
#X text 479 34 Outro objeto que trabalha com MIDI é o [midifile] da
biblioteca "mrpeach".;
#X text 479 123 O Pd possui diversos objetos nativos que lidam com
mensagens MIDI \, gerenciando a entrada e saída de um dispositivo MIDI
conectado ao computador.;
#X text 480 177 A seguir \, uma série de objetos que trabalham com
mensagens MIDI específicas.;
#X text 665 230 Notas;
#X text 664 258 Controle;
#X text 664 287 Bend Wheel;
#X text 665 317 Program;
#X text 666 350 Aftertouch;
#X text 666 378 Aftertouch polifônico;
#X text 480 424 Há também os objetos que lidam com mensagens MIDI "cruas".
;
#X text 482 504 Por fim \, o [sysexin] recebe mensagens de "sysex"
enviadas ao Pd. Porém \, o Pd não as envia.;
#X msg 142 280 read ./files/bach.mid \, bang;
#X msg 260 406 \; loop 1 \; ganho 0.8 \; pd dsp 1;
#X text 50 113 Neste patch usamos o outlet esquerdo que são as mensagens
de notas MIDI \, que usamos para controlar duas vozes. O [seq] envia
um bang no outlet direito quando termina a sequência e usamos isso
para um loop.;
#X connect 0 0 45 0;
#X connect 1 0 22 0;
#X connect 1 1 19 0;
#X connect 18 0 45 0;
#X connect 19 0 18 0;
#X connect 20 0 19 1;
#X connect 22 0 26 0;
#X connect 23 0 28 0;
#X connect 24 0 28 1;
#X connect 25 0 23 0;
#X connect 25 1 24 0;
#X connect 26 0 29 0;
#X connect 26 1 29 1;
#X connect 26 2 29 2;
#X connect 27 0 28 2;
#X connect 29 0 25 0;
#X connect 30 0 46 0;
#X connect 45 0 1 0;
