#N canvas 79 58 1276 671 10;
#X obj 64 241 readsf~;
#X obj 53 276 dac~;
#X text 49 20 A forma mais simples de tocar um arquivo de som é com
o [readsf~] (de "read sound file"). Ele toca um arquivo direto do seu
HD e não oferece muitos recursos.;
#X msg 91 211 stop;
#X obj 103 267 spigot;
#X obj 136 242 tgl 15 0 empty empty empty 17 7 0 10 -228856 -1 -1 0
1;
#X obj 103 292 bng 15 250 50 0 empty empty empty 17 7 0 10 -228856
-1 -1;
#X text 154 242 loop;
#X obj 239 240 openpanel;
#X obj 239 218 bng 15 250 50 0 empty empty empty 17 7 0 10 -261682
-1 -1;
#X obj 239 266 symbol;
#X obj 239 313 readsf~;
#X msg 239 290 open \$1 \, 1;
#X obj 233 337 dac~;
#X msg 207 290 0;
#X text 259 216 Escolher arquivo;
#X text 264 178 abre arquivo e toca;
#X obj 563 480 tabplay~ \$0-sample;
#X obj 37 559 soundfiler;
#X obj 37 507 symbol \$0-sample;
#X obj 37 483 loadbang;
#X floatatom 37 583 0 0 0 0 - - -;
#X text 35 627 número de amostras do arquivo;
#X obj 298 585 soundfiler;
#X floatatom 298 609 0 0 0 0 - - -;
#X obj 298 509 openpanel;
#X obj 298 487 bng 15 250 50 0 empty empty empty 17 7 0 10 -261682
-1 -1;
#X text 319 486 escolher arquivo;
#X text 499 31 Array (ou "buffer") com arquivo de som carregado.;
#X obj 563 381 bng 15 250 50 0 empty empty empty 17 7 0 10 -261234
-1 -1;
#X obj 555 513 dac~;
#X obj 585 420 nbx 7 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -192252
-1 -1 0 256;
#X obj 668 510 bng 15 250 50 0 empty empty empty 17 7 0 10 -228856
-1 -1;
#X obj 547 77 cnv 15 198 138 empty empty empty 20 12 0 14 -233017 -66577
0;
#N canvas 0 22 450 300 (subpatch) 0;
#X array \$0-sample 534167 float 2;
#X coords 0 1 534167 -1 200 140 1;
#X restore 546 76 graph;
#X obj 37 607 s size;
#X obj 298 631 s size;
#X obj 672 376 metro 1000;
#X obj 672 404 random;
#X obj 721 400 r size;
#X obj 672 354 tgl 15 0 empty empty empty 17 7 0 10 -249647 -1 -1 0
1;
#X text 529 379 play;
#X floatatom 672 427 0 0 0 0 - - -;
#X msg 672 449 \$1 44100;
#X obj 939 310 bng 20 250 50 0 empty empty empty 17 7 0 10 -255906
-1 -1;
#X obj 886 345 adc~ 1;
#X msg 1116 145 open \$1;
#X obj 1116 100 bng 15 250 50 0 empty empty empty 17 7 0 10 -260097
-1 -1;
#X obj 1116 122 savepanel;
#X msg 972 157 stop;
#X obj 1024 610 soundfiler;
#X obj 1024 520 bng 15 250 50 0 empty empty empty 17 7 0 10 -259863
-1 -1;
#X obj 1024 542 savepanel;
#X obj 939 429 tabwrite~ \$0-sample;
#X text 964 312 Gravar;
#X msg 968 399 stop;
#X msg 957 375 start \$1;
#X obj 957 353 nbx 6 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -192252
-1 -1 0 256;
#X obj 922 100 adc~ 1;
#X text 1120 81 escolher onde;
#X text 1140 96 gravar;
#X msg 1024 588 write \$1 \$2;
#X obj 1024 565 list append \$0-sample;
#X text 1004 399 parar;
#X obj 957 189 writesf~;
#X text 902 473 Por fim \, podemos exportar uma tabela para um arquivo
de áudio também com o objeto [soundfiler] \, como abaixo.;
#X text 891 27 Para gravar um som \, podemos gravar direto em um arquivo
do HD com o [writesf~] \, que funciona de modo simlar ao objeto [readsf~].
;
#X obj 1106 429 send \$0-sample;
#X floatatom 1106 388 0 0 0 0 - - -;
#X obj 1160 341 loadbang;
#X obj 1160 361 samplerate~;
#X obj 1128 362 *;
#X obj 1128 319 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0
10 -220664 -1 -1 0 256;
#X obj 349 270 loadbang;
#X msg 349 292 \; pd dsp 1;
#X text 1185 317 segundos;
#X msg 1106 408 resize \$1;
#X obj 1186 390 s size;
#X text 896 229 O [tabwrite~] escreve direto em uma tabela. Podemos
interromper a gravação e dar um ponto (em amostra) para iniciar a gravar.
Abaixo \, à direita \, temos uma forma de especificar o tamanho da
tabela em segundos.;
#X text 958 335 amostra pra começar;
#X text 1024 350 a gravar;
#X text 502 556 Apesar de não ser muita coisa \, já podemos pelo menos
tocar apenas somente trechos do arquivo de som. Isso abre portas ainda
para "granulação" (tocar trechos bem curtos \, ou "grãos"). Veremos
capacidades mais avançadas \, incluindo granulação \, logo mais. Antes
de mais nada \, vejamos como gravar sons em arquivos de áudio ou em
um array/buffer.;
#X obj 298 532 list append \$0-sample;
#X msg 518 432 stop;
#X msg 957 130 open ./Teste.wav \, start;
#X floatatom 755 373 5 0 0 0 - - -;
#X text 51 65 A mensagem "start" (ou um número que não seja 0) toca
o arquivo \, e "stop" (ou zero) interrompe o proceeso. A cada vez que
ele for tocar um arquivo (mesmo que seja um que acabou de ser tocado)
\, ele precisa primeiro receber comando "open" com o endereço do arquivo
de som. Ao acabar de tocar o arquivo \, o outlet direito envia um bang.
;
#X text 33 370 Para termos mais possibilidades de reprodução \, precisamos
jogar o arquivo em um "buffer" (termo que indica memória alocada).
Para tal \, guardamos o arquivo de áudio em um array com o objeto [soundfiler].
Para tal \, usamos o comando "read" seguido do nome do arquivo e tabela
(-resize redimensiona a tabela de acordo com o tamnho do arquivo \,
que é dado no outlet).;
#X text 486 241 A forma mais simples de tocar um array é com o [tabplay~].
Para tocar o buffer inteiro \, basta enviar um bang. Para um controle
de onde começar a a tocar \, precisamos indicar o ponto de partida
com o número da amostra. Podemos ainda enviar um lista com o número
de amostra e a quantidade de tempo (também em número de amostras) para
tocar a partir dali. Sempre que termina de tocar \, ele envia um bang
no outlet direito.;
#X msg 298 557 read -resize \$1 \$2;
#X msg 64 179 open ../samples/bubul.wav \, 1;
#X msg 37 531 read -resize ../samples/bubul.wav \$1;
#X connect 0 0 1 0;
#X connect 0 0 1 1;
#X connect 0 1 4 0;
#X connect 3 0 0 0;
#X connect 4 0 6 0;
#X connect 5 0 4 1;
#X connect 6 0 90 0;
#X connect 8 0 10 0;
#X connect 9 0 8 0;
#X connect 10 0 12 0;
#X connect 11 0 13 0;
#X connect 11 0 13 1;
#X connect 11 1 10 0;
#X connect 12 0 11 0;
#X connect 14 0 11 0;
#X connect 17 0 30 0;
#X connect 17 0 30 1;
#X connect 17 1 32 0;
#X connect 18 0 21 0;
#X connect 19 0 91 0;
#X connect 20 0 19 0;
#X connect 21 0 35 0;
#X connect 23 0 24 0;
#X connect 24 0 36 0;
#X connect 25 0 82 0;
#X connect 26 0 25 0;
#X connect 29 0 17 0;
#X connect 31 0 17 0;
#X connect 37 0 38 0;
#X connect 38 0 42 0;
#X connect 39 0 38 1;
#X connect 40 0 37 0;
#X connect 42 0 43 0;
#X connect 43 0 17 0;
#X connect 44 0 53 0;
#X connect 45 0 53 0;
#X connect 46 0 64 0;
#X connect 47 0 48 0;
#X connect 48 0 46 0;
#X connect 49 0 64 0;
#X connect 51 0 52 0;
#X connect 52 0 62 0;
#X connect 55 0 53 0;
#X connect 56 0 53 0;
#X connect 57 0 56 0;
#X connect 58 0 64 0;
#X connect 61 0 50 0;
#X connect 62 0 61 0;
#X connect 68 0 76 0;
#X connect 69 0 70 0;
#X connect 70 0 71 1;
#X connect 71 0 68 0;
#X connect 71 0 77 0;
#X connect 72 0 71 0;
#X connect 73 0 74 0;
#X connect 76 0 67 0;
#X connect 82 0 89 0;
#X connect 83 0 17 0;
#X connect 84 0 64 0;
#X connect 85 0 37 1;
#X connect 89 0 23 0;
#X connect 90 0 0 0;
#X connect 91 0 18 0;
