#N canvas 199 26 993 436 10;
#X obj 749 231 pack f f f;
#X obj 749 197 poly 2 1;
#X text 813 134 sustain;
#X obj 167 225 metro 500;
#X obj 167 247 expr random(48 \, 72) \; random(500 \, 2000);
#N canvas 588 58 491 582 voice1 0;
#X obj 200 447 *~;
#X obj 215 409 vline~;
#X obj 97 242 mtof;
#X floatatom 97 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 97 215 5 0 0 0 - - -;
#X obj 200 479 outlet~;
#X msg 271 374 \$1 10 \, \$2 40 10;
#X obj 97 298 phasor~;
#X obj 148 282 *~ 0.5;
#X obj 148 306 +~ 0.5;
#X obj 97 335 triangle~;
#X obj 110 99 unpack float float;
#X obj 215 189 != 0;
#X obj 215 214 sel 0 1;
#X msg 215 364 0 50;
#X obj 148 258 osc~ 0.125;
#X connect 0 0 13 0;
#X connect 1 0 0 1;
#X connect 2 0 3 0;
#X connect 3 0 15 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 20 0;
#X connect 8 1 9 1;
#X connect 9 0 7 0;
#X connect 10 0 19 0;
#X connect 11 0 8 0;
#X connect 12 0 2 0;
#X connect 14 0 1 0;
#X connect 15 0 18 0;
#X connect 16 0 17 0;
#X connect 17 0 18 1;
#X connect 18 0 0 0;
#X connect 19 0 12 0;
#X connect 19 1 11 0;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 21 1 9 0;
#X connect 22 0 1 0;
#X connect 23 0 16 0;
#X restore 711 299 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 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 msg 215 364 0 50;
#X connect 0 0 13 0;
#X connect 1 0 0 1;
#X connect 2 0 3 0;
#X connect 3 0 15 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 22 0;
#X connect 8 1 9 1;
#X connect 9 0 7 0;
#X connect 10 0 20 0;
#X connect 11 0 8 0;
#X connect 12 0 2 0;
#X connect 14 0 1 0;
#X connect 15 0 17 0;
#X connect 16 0 17 1;
#X connect 17 0 0 0;
#X connect 18 0 16 0;
#X connect 19 0 18 0;
#X connect 20 0 12 0;
#X connect 20 1 11 0;
#X connect 21 0 23 0;
#X connect 21 1 9 0;
#X connect 22 0 21 0;
#X connect 23 0 1 0;
#X restore 774 299 pd voice2;
#X obj 749 263 route 1 2;
#X obj 803 333 hsl 128 15 0 1 0 0 empty ganho empty -2 -6 0 10 -240877
-1 -1 0 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 749 360 pd output;
#X obj 167 282 makenote 127 100;
#X obj 749 162 sustain;
#X obj 788 135 tgl 20 0 empty empty empty 0 -6 0 8 -261493 -1 -1 0
1;
#X obj 167 185 loadbang;
#X obj 167 206 tgl 15 0 empty empty empty 17 7 0 10 -228856 -1 -1 1
1;
#X msg 98 231 \; pd dsp 1;
#X obj 498 231 pack f f f;
#X obj 498 197 poly 2 1;
#N canvas 588 58 491 582 voice1 0;
#X obj 200 447 *~;
#X obj 215 409 vline~;
#X obj 95 242 mtof;
#X floatatom 95 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 95 215 5 0 0 0 - - -;
#X obj 200 479 outlet~;
#X msg 271 374 \$1 10 \, \$2 40 10;
#X obj 95 298 phasor~;
#X obj 146 282 *~ 0.5;
#X obj 146 306 +~ 0.5;
#X obj 95 335 triangle~;
#X obj 110 99 unpack float float;
#X obj 215 189 != 0;
#X obj 215 214 sel 0 1;
#X msg 215 364 0 50;
#X obj 146 258 osc~ 0.125;
#X connect 0 0 13 0;
#X connect 1 0 0 1;
#X connect 2 0 3 0;
#X connect 3 0 15 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 20 0;
#X connect 8 1 9 1;
#X connect 9 0 7 0;
#X connect 10 0 19 0;
#X connect 11 0 8 0;
#X connect 12 0 2 0;
#X connect 14 0 1 0;
#X connect 15 0 18 0;
#X connect 16 0 17 0;
#X connect 17 0 18 1;
#X connect 18 0 0 0;
#X connect 19 0 12 0;
#X connect 19 1 11 0;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 21 1 9 0;
#X connect 22 0 1 0;
#X connect 23 0 16 0;
#X restore 460 299 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 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 msg 215 364 0 50;
#X connect 0 0 13 0;
#X connect 1 0 0 1;
#X connect 2 0 3 0;
#X connect 3 0 15 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 22 0;
#X connect 8 1 9 1;
#X connect 9 0 7 0;
#X connect 10 0 20 0;
#X connect 11 0 8 0;
#X connect 12 0 2 0;
#X connect 14 0 1 0;
#X connect 15 0 17 0;
#X connect 16 0 17 1;
#X connect 17 0 0 0;
#X connect 18 0 16 0;
#X connect 19 0 18 0;
#X connect 20 0 12 0;
#X connect 20 1 11 0;
#X connect 21 0 23 0;
#X connect 21 1 9 0;
#X connect 22 0 21 0;
#X connect 23 0 1 0;
#X restore 523 299 pd voice2;
#X obj 498 263 route 1 2;
#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 498 360 pd output;
#N canvas 48 46 765 395 sustain 0;
#X obj 280 46 inlet;
#X obj 215 45 inlet;
#X obj 151 45 inlet;
#X obj 151 134 pack float float float;
#X obj 103 256 bag;
#X obj 176 218 stripnote;
#X msg 59 213 flush;
#X msg 103 280 \$1 0;
#X obj 59 143 == 0;
#X msg 103 213 clear;
#X obj 59 167 select 1 0;
#X obj 151 191 route 0 1;
#X msg 151 167 \$3 \$1 \$2;
#X obj 227 328 outlet;
#X obj 151 328 outlet;
#X obj 280 82 tgl 15 0 empty empty empty 17 7 0 10 -228856 -1 -1 0
1;
#X text 291 193 Se o sustain estiver ligado \, rotemos as notas MIDI
para o [stripnote]. Precisamos apenas armazenar quais notas MIDI foram
tocadas para \, quando o sustain for desligado \, enviarmos as respectivas
mensagens de Note-Off. Esse armazenamento pode ser feito com o objeto
[bag].;
#X connect 0 0 15 0;
#X connect 1 0 3 1;
#X connect 2 0 3 0;
#X connect 3 0 12 0;
#X connect 4 0 7 0;
#X connect 5 0 4 0;
#X connect 5 0 14 0;
#X connect 5 1 4 1;
#X connect 5 1 13 0;
#X connect 6 0 4 0;
#X connect 7 0 14 0;
#X connect 8 0 10 0;
#X connect 9 0 4 0;
#X connect 10 0 6 0;
#X connect 10 1 9 0;
#X connect 11 0 14 0;
#X connect 11 1 5 0;
#X connect 12 0 11 0;
#X connect 15 0 3 2;
#X connect 15 0 8 0;
#X restore 498 171 pd sustain;
#X text 299 253 Notas randômicas;
#X obj 167 331 s \$0-note;
#X obj 260 329 s \$0-vel;
#X obj 707 88 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-note empty 0 -8 0
10 -261682 -1 -1 68 256;
#X text 724 104 Note;
#X obj 768 88 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-vel empty 0 -8 0
10 -261682 -1 -1 0 256;
#X text 774 107 Velocity;
#X obj 707 48 notein;
#X obj 498 88 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-note empty 0 -8 0
10 -261682 -1 -1 68 256;
#X text 515 104 Note;
#X obj 559 88 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-vel empty 0 -8 0
10 -261682 -1 -1 0 256;
#X text 565 107 Velocity;
#X obj 498 48 notein;
#X floatatom 167 308 5 0 0 0 - - -;
#X floatatom 260 307 5 0 0 0 - - -;
#X text 63 44 Um pedal de sustain \, quando acionado \, não deixa as
mensagens de Note Off passarem. Podemos criar no Pd um mecanismo de
sustain a partir do [stripnote] \, como no subpatch [pd sustain] abaixo.
;
#X text 64 113 O Pd extended também traz um objeto [sustain] que serve
para esse propósito.;
#X obj 552 337 hsl 128 15 0 1 0 0 empty ganho empty -2 -6 0 10 -240877
-1 -1 0 0;
#X text 580 141 sustain;
#X obj 555 142 tgl 20 0 empty empty empty 0 -6 0 8 -261493 -1 -1 0
1;
#X connect 0 0 7 0;
#X connect 1 0 0 0;
#X connect 1 1 0 1;
#X connect 1 2 0 2;
#X connect 3 0 4 0;
#X connect 4 0 10 0;
#X connect 4 1 3 1;
#X connect 5 0 9 0;
#X connect 6 0 9 1;
#X connect 7 0 5 0;
#X connect 7 1 6 0;
#X connect 8 0 9 2;
#X connect 10 0 36 0;
#X connect 10 1 37 0;
#X connect 11 0 1 0;
#X connect 11 1 1 1;
#X connect 12 0 11 2;
#X connect 13 0 14 0;
#X connect 13 0 15 0;
#X connect 14 0 3 0;
#X connect 16 0 20 0;
#X connect 17 0 16 0;
#X connect 17 1 16 1;
#X connect 17 2 16 2;
#X connect 18 0 21 0;
#X connect 19 0 21 1;
#X connect 20 0 18 0;
#X connect 20 1 19 0;
#X connect 22 0 17 0;
#X connect 22 1 17 1;
#X connect 26 0 11 0;
#X connect 28 0 11 1;
#X connect 30 0 26 0;
#X connect 30 1 28 0;
#X connect 31 0 22 0;
#X connect 33 0 22 1;
#X connect 35 0 31 0;
#X connect 35 1 33 0;
#X connect 36 0 24 0;
#X connect 37 0 25 0;
#X connect 40 0 21 2;
#X connect 42 0 22 2;
