#N canvas 207 22 1018 688 10;
#X obj 187 602 dac~;
#X obj 231 548 unsig~ 1;
#X obj 231 575 vsl 15 80 0 1 0 0 empty empty empty 0 -9 0 10 -228856
-1 -1 0 1;
#X obj 131 475 osc~ 440;
#X obj 196 563 *~;
#X msg 341 294 0 1000 1 500 0.5 1000 0.5 500 1 1000 0;
#X obj 63 243 vline~;
#X obj 63 183 nbx 5 14 -1e+37 1e+37 0 0 empty tempo empty 0 -8 0 10
-228856 -1 -1 4000 256;
#X obj 40 149 bng 20 250 50 0 empty empty empty 17 7 0 10 -239973 -1
-1;
#X text 124 182 tempo (ms);
#X obj 739 603 phasor~;
#X obj 739 539 expr 1000 / $f1;
#X floatatom 739 516 5 0 0 0 - tempo -;
#X floatatom 739 573 5 0 0 0 - - -;
#X floatatom 122 130 5 0 0 0 - - -;
#X obj 40 90 tgl 20 0 empty empty empty 17 7 0 10 -236717 -1 -1 0 1
;
#X text 36 68 loop;
#X obj 478 574 loadbang;
#X obj 341 269 loadbang;
#X obj 341 319 trigger list bang list bang;
#X obj 447 343 list split 2;
#X obj 447 384 unpack;
#X obj 480 408 +;
#X obj 514 408 f;
#X obj 481 363 t l;
#X msg 532 342 0;
#X obj 453 431 float;
#X floatatom 453 455 5 0 0 0 - - -;
#X text 810 602 loop com [phasor~];
#X text 214 91 A primeira diferença prática em relação ao [breakpoints]
\, como é de se esperar \, é que o [breakpoints~] envia um sinal de
áudio - que já pode ser usado diretamente como envelope.;
#X obj 739 639 expr~ $v1 * indices;
#X obj 453 479 value indices;
#X obj 63 270 expr~ $v1 * indices;
#X text 458 504 número total;
#X text 459 522 de índices;
#X text 621 26 A sintaxe de gerar funções continua a mesma do [envgen].
Todavia \, o tempo não é mais definido em ms \, e esse valor precisa
ser encarado como índice da tabela. Quem define o tempo de leitura
agora é o sinal de áudio.;
#X text 430 228 soma de índices = 1;
#X msg 209 228 0 0.1 1 0.4 0.5 0.1 0.5 0.3 1 0.1 0;
#X text 621 91 Como no exemplo anterior de envelope com tabelas \,
o sinal de áudio precisa enviar o número certo de índices para uma
leitura apropriada. Fazemos isso aqui ao multiplicar a saída do [vline~]
pelo número de índices (ou pontos) da função gerada.;
#X text 622 164 Por conveniência \, o patch calcula automaticamente
o valor total de índices ao somar sempre o segundo valor dos pares
que definem cada linha da função. Afinal \, é o segundo valor de cada
par que define o tanto de índices que cada reta possui.;
#X text 623 239 Por comodidade e simplicidade \, você pode criar funções
cuja soma de índices é sempre igual a um. Isso descarta não só a necessidade
da soma de índices \, como também multiplicar pelo número de índices.
Em todo caso \, este exemplo oferece uma forma eficaz de trabalhar
com qualquer soma de índices.;
#X text 623 325 ============================================================
;
#X text 779 514 tempo (ms);
#X text 776 572 Hz;
#X text 625 414 Não há muito mistério. Basta \, igualmente \, multiplicar
a saída pelo número de índices. Abaixo \, temos a possibilidade de
entrar com o valor do período em ms para converter em frequência (Hz).
;
#X msg 63 210 0 \, 1 \$1;
#X obj 213 388 tof/breakpoints~;
#X msg 478 598 \; pd dsp 1 \; tempo set 4000 \; metro 4000;
#X obj 40 123 metro 4000;
#X text 214 31 Por fim \, similar ao [breakpoints] \, temos ainda outra
variação do [envgen] na biblioteca "tof" \, o [breakpoints~] \, que
gera sinal de áudio. A diferença visual é que ele possui uma borda
mais grossa que o [breakpoints].;
#X text 214 139 Outra diferença é que ele recebe sinal de áudio como
índice da função gerada. Logo \, é semelhante aos exemplos de uso de
tabelas para envelopes \, já que também fizemos a leitura das tableas
por meio de um sinal de áudio com o [vline~] \, do mesmo modo que neste
exemplo.;
#X text 624 359 À esquerda temos um esquema de looping com o [metro].
Mas podemos também usar o [phasor~] que \, afinal \, está sempre enviando
sinais em "loop".;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 0 1;
#X connect 4 0 0 0;
#X connect 5 0 19 0;
#X connect 6 0 32 0;
#X connect 7 0 45 0;
#X connect 8 0 7 0;
#X connect 10 0 30 0;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 7 0;
#X connect 14 0 48 1;
#X connect 15 0 48 0;
#X connect 17 0 47 0;
#X connect 18 0 5 0;
#X connect 19 0 46 0;
#X connect 19 1 26 0;
#X connect 19 2 20 0;
#X connect 19 3 25 0;
#X connect 20 0 21 0;
#X connect 20 1 24 0;
#X connect 21 1 22 0;
#X connect 22 0 23 0;
#X connect 22 0 26 1;
#X connect 23 0 22 1;
#X connect 24 0 20 0;
#X connect 25 0 22 1;
#X connect 26 0 27 0;
#X connect 27 0 31 0;
#X connect 32 0 46 0;
#X connect 37 0 19 0;
#X connect 45 0 6 0;
#X connect 46 0 1 0;
#X connect 46 0 4 1;
#X connect 48 0 8 0;
