Skip navigation

programação em ambientes visuais. breve história, o patch, o metro, o bang, o toggle, o número, os sliders, e objectos de controlo de fluxo, como o gate, o switch, o select; objectos de sensores como as teclas no objecto key, o objecto  suddenmotionsensor que analisa a orientação dos portáteis mac; objectos de áudio, diferenças entre fluxos de controlo e fluxos de áudio.

 

1. introdução programação visual

o pd (puredata) surge da mente do miller puckette — e hoje em dia muitos mais outros developers espalhados pelo mundo — como a alternativa open source ao max/msp. o max foi iniciado no ircam em meados de 1980’s pelo miller puckette, e foi desenhado para ser usado por compositores, tentando simplificar a tarefa da compilação e sobretudo da programação de algoritmos que possam ser aplicados em tempo real ao som que é gerado por instrumentos. são ambientes de programação visuais, onde pequenos módulos (objectos) já se encontram compilados, apenas temos de os criar num patch, uma janela branca inicialmente vazia, e ligá-los uns aos outros através de patch cords  para criar qualquer tipo de programa. aqui estamos libertos da compilação do programa, o patch está sempre operacional, e pode ser editado à medida que corre. 

os módulos realizam tarefas de vários níveis, simples, como o caso dos bangs, toggles, números, e mais elaboradas como objectos áudio, o osc~ ,  44100 valores por segundo em forma de onda sinusoidal a determinada frequência são emitidos para outros objectos que manipulam ou expõem o áudio. 

todos os objectos têem um help files e os objectos gráficos (bang, toggle, sliders, num,…) têem propriedades que podem ser editadas. crtl+click ou butão direito do rato em cima de qualquer objecto, e seleccionar help ou properties. o help file tem informações das mensagens que o objecto recebe e uma curta explicação do seu funcionamento.

11-bang_properties

2. primeiros patches

há dois modos principais do programa: o modo de edição  e o de interacção ( maçã/ctrl+e , ou menu edit > edit mode). no de edição podemos criar novas caixas de objectos (através do menu put > object, ou maçã/ctrl+1) e depositá-las com um click algures na janela do patch. no de interacção, interagimos com os objectos que o permitem, interruptores, números, mensagens.

no modo de edição, escrevemos ‘metro’ na caixa e clickamos fora da janela. a caixa transforma-se de tracejada para uma caixa com 2 inlets e 1 outlet. clickamos novamente na caixa e a seguir a metro, espaço, 500. este 500 será o argumento em milisegundos para o objecto metro. este objecto emite bangs de x em x ms. em cima do metro colocamos um toggle (menu put > toggle) e já aparece um objecto gráfico distinto dos objectos. ligamos a outlet do toggle ao metro. colocamos um bang em baixo do metro e ligamos da outlet do metro à inlet do bang. passamos agora para o modo de interacção ( maçã/ctrl+e ou menu edit > edit mode) e clickamos no toggle. o toggle emite a mensagem ‘1’ que o metro recebe e interpreta-a ligando-se, emite bangs de meio em meio segundo.

11-bang

depois criámos mais dois objectos, um ‘random 127’ e um ‘counter 127’. estes recebem os bangs e geram números aleatórios até 126 ou contando de 0 a 127. para tal basta ligar do bang aos dois objectos, e de cada objecto a um número para observar os resultados.

11-p0_randomcounter

agora convertemos os resultados numéricos em pitchs de osciladores. estes resultados numéricos de 0-127 estão numa escala midi que é transformada em hz, a unidade da frequência dos osciladores. há um objecto ‘mtof’ que aplica internamente esta conversão. depois colocamos os objectos da cadeia de áudio. um osc~, um *~ que escala o volume do sinal, um dac~, digital to analogue converter, que emite o sinal de áudio para as colunas. notem que as cores das cordas áudio são diferentes das cores fluxo normal. isso indica que esses objectos comunicam entre si à sampling rate do funcionamento da cadeia de audio. o input output do áudio pode ser configurado no menu media > portaudio. e o ligar e desligar do processamento audio é realizado na window > pd window, a consola onde o programa vai escrevendo mensagens de erro ou coisas que nós printemos para lá (objecto print). aí, tem de se ligar o compute audio que liga internamente a compilação de todos os objectos áudio (objectos que terminam em til ~)

11-audio0

 

3. osciladores lfo e leitura de samples

um lfo é um oscilador que tem um centro numa  frequência e somamos a  esse valor outro oscilador que vai induzir uma oscilação de maior ou menor frequência e profundidade em torno da frequência fundamental.

11-lfo

para lermos ficheiros do disco ou lemos com o objecto readsf~, ou lemos para arrays, que são objectos do pd que armazenam o som na memória do computador. 

quando o som está nas arrays pode ser acedido através de outros objectos que os podem reproduzir à velocidade normal, ou fazer variar este valor.

11-readsf11-arraysom

4. delays

para fazer delays ao sinal áudio, há objectos que comunicam por nome, como é o caso da comunicação array / tabread4~. aí a array tem o nome soundarray e cada objecto tabread4~ tem como argumento soundarray. nos delays vamos ter o delwrite~ <nome do delay> <tempo máximo ms delay>. e depois podemos criar vários delread~ <nome do delay> <tempo de delay, entre 0 e tempo máximo>, cada um destes objectos lê a cadeia de som atrasada x ms. 

introduzimos aqui também a gravação de ficheiros de som para o disco e o uso de microfones do computador através do objecto adc~ , analogue to digital converter.

11-delays

5. comunicação pure-data <-> processing através de osc

criamos uma comunicação via localhost (morada ip: 127.0.0.1) entre o processing e o pd através de osc encapsulado em servidores udp. no pd precisamos dos objectos udpsend e udpreceive, e no processing da biblioteca oscp5. uma vez instaladas as bibliotecas ( a do processing, no pd-extended já temos os externos de rede), podemos criar uma ligação do pd para o processing e do processing para o pd. (quem diz pd, diz também max, of, etc). 

a ligação pd->processing vai para o ip da própria máquina, para a porta 12000. a ligação processing->pd vai para o mesmo ip para a porta 12001. o processing lê da porta 12000 e envia para a 12001, o pd lê da 12001 e envia para a 12000.

em cada um dos lados, verificamos o identificador da mensagem osc ( /audio, /b1, /x,…) e atribuímos a variáveis no programa que executam tarefas.

11-p5-pd

 

ainda vimos um último exemplo que correspondia à integração de audio em pd no sketch bolas e obstáculos 7 do processing. para tal, sempre que há lançamento de explosões enviamos uma mensagem osc do processing para o pd que despoleta a reprodução de samples.

11-pdprocessing-bolas

Anúncios

One Trackback/Pingback

  1. By sessão 18 « O Som do Pensamento on 27 Maio 2009 at 11:41 am

    […] frequências, filtrar microfones, analisar níveis de som, criar processos interactivos. (sessões 11, […]

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: