#N canvas 0 89 1280 711 16; #N canvas 0 91 450 250 (subpatch) 0; #X array sinal101 88200 float 2; #X coords 0 1 882 -1 800 560 1 0 0; #X restore 391 104 graph; #X obj 21 90 bng 30 250 50 0 empty empty Sintetiza_sinal 32 16 0 16 -262130 -4160 -4160; #X obj 21 499 bng 30 250 50 0 empty empty Toca_sinal 32 16 0 16 -262130 -4160 -4160; #X obj 21 572 dac~; #X obj 20 10 cnv 15 1200 40 empty empty empty 0 16 0 16 -262130 -4160 0; #X text 34 18 Exemplo 101: sintetiza um sinal senoidal de 2 segundos com frequência de 440 Hz \, usando a taxa de amostragem default, f 116; #X text 56 137 script em Lua (via Ofelia); #X text 218 539 varre o sinal 1x; #X text 70 572 saída p/ altofalantes (estéreo); #X text 19 359 clique para enviar a mensagem para o objeto Pd (dsp 1 => ligar DSP), f 35; #N canvas 0 89 1280 711 clique 0; #N canvas 0 91 450 250 (subpatch) 0; #X array sinal101B 1027 float 2; #X coords 0 1 1027 -1 400 280 1 0 0; #X restore 767 174 graph; #X text 13 139 Em particular \, funções senoidais podem ser facilmente criadas enviando mensagens específicas para os vetores:, f 61; #X text 305 192 (clique sobre as mensagens \; o 1024 é o tamanho do vetor criado \, e tem a ver com o uso desse tipo de construção... cenas dos próximos capítulos...), f 27; #X obj 19 523 osc~ 440; #X obj 18 615 dac~; #X obj 18 584 *~; #X obj 112 523 tgl 24 0 empty empty liga/desliga 26 12 0 16 -262144 -1 -1 0 1; #X text 14 23 O programa (patch) CompMus101 usa a integração com a linguagem Lua através do objeto [ofelia] para inicializar um vetor (sinal) com amostras de uma função senoidal com frequência 440 Hz. Isso poderia ser realizado em Pd puro (sem Lua) de várias maneiras \, mas o objetivo do exemplo era justamente ilustrar essa integração \, bem como o acesso controlado a vetores contendo sinais de áudio. , f 121; #X text 16 418 Por outro lado \, o Pd é um ambiente concebido primariamente para processamento de fluxos em tempo real. Aos poucos iremos introduzindo objetos que produzem e processam fluxos de áudio (ao invés de variáveis "estáticas"). Para gerar um sinal senoidal de 440 Hz em Pd o modo mais "natural" seria usar um oscilador:, f 65; #X msg 16 196 \; sinal101B sinesum 1024 1; #X msg 16 246 \; sinal101B sinesum 1024 0 1; #X msg 16 296 \; sinal101B sinesum 1024 0 0 1; #X msg 16 347 \; sinal101B sinesum 1024 0.3 0.3 0.3; #X connect 3 0 5 0; #X connect 5 0 4 0; #X connect 6 0 5 1; #X coords 0 711 1 710 336 24 0; #X restore 19 638 pd clique para saber mais sobre o Pd; #X msg 21 406 \; pd dsp 1 \;, f 32; #X obj 21 539 tabplay~ sinal101; #X obj 21 165 ofelia f \; local s = ofArray("sinal101") \; local pi = math.pi \; local f = 440 \; local SR = 44100 \; for i = 0 \, s:getSize()-1 do \; s[i] = math.sin(2*pi*f*i/SR) \; end \;; #X connect 1 0 13 0; #X connect 2 0 12 0; #X connect 12 0 3 0; #X connect 12 0 3 1;