1 Julho, 2008
9 Novembro, 2007
25 Agosto, 2007
Square Wave: Monofônico

Esse programa é igual ao sintetizador anterior mas o objeto notein foi substituÃdo pelo objeto pd com argumento midi. O objeto pd cria uma janela nova (chamado de subpatch). Seu propósito é permitir separação de código que facilita a leitura do programa. Seu parâmetro é qualquer nome que descreve sua funcionalidade.

Esse subpatch pega os outlets de nota e de velocidade do objeto noteout e só permiti a saÃda deles se a saÃda de velocidade não for 0 ou se a saÃda for 0 e a nota for a mesma que a nota tocada anteriormente.
Nesse subpatch temos quatro objetos novos. O objeto f ou float controla números. Nele temos dois inlets. Quando o da direita é acionada com um número este será carregado na memória do objeto. Quando o da esquerda é acionado com um bang o número em sua memória sairá pelo outlet. Quando o da esquerda é acionado com um número este sairá pelo outlet e será carregado na memória do objeto. também existe o objeto symbol que se comporta da mesma forma mas com o symbols em vez de números.
O objeto t ou trigger recebe como parâmetro tipos de valores (bang/b, float/f, s/symbol, a/anything) e cria um outlet para cada argumento do tipo designado. Quando o inlet é acionado todos os outlets serão acionados na ordem convencional.
O objeto sel ou select recebe como parâmetro números e/ou symbols. Para cada argumento do parâmetro ele cria um novo outlet. Quando o inlet é acionado com um valor igual ao um dos argumentos, seu outlet é acionado. O sel sempre terá um outlet a mais que fica na direita. Quando o valor do inlet não corresponde ao um argumento ele sairá por este outlet. Neste subpatch temos dois objetos sel. Um verifica se a velocidade for igual a 0 e outro se a nota acionada for igual à nota anterior.
O objeto outlet cria uma saida nova. outlets são organizados horizontalmente. O outlet da esquerda corresponde com o outlet da esquerda no objeto pd no subpatch pai do subpatch que este objeto outlet se encontra. A convenção do pure data quando todos os outlets de um subpatch são acionados ao mesmo tempo é sempre acionar eles de direita pra esquerda. O objeto inlet se comporta da mesma forma mas para inlets, também existe os objetos outlet~ e inlet~ que funcionam com sinais. Neste subpatch temos dois outlets. O primeiro corresponde à nota tocada e o segundo à velocidade.
2 Julho, 2007
24 Junho, 2007
Square Wave: midi e phasor
Um square wave (onda quadrada) é uma forma de onda básica que contém apenas harmônicas Ãmpares. É um som que foi popularizado nos anos 80 e inÃcio de 90 por vÃdeo games.
[sourceforge]
Exemplo feito usando o programa square1.pd
Para gerar uma onda quadrada teremos que subtrair um saw wave (Onda dente de serra) de um outro saw wave com a mesmo frequência e com uma fase de 180°. (fonte)

Esse programa demonstra a geração de uma onda quadrada. O objeto phasor~ gera uma onda dente de serra. O primeiro inlet espera a frequência e o inlet espera uma fase. Em pd fases são expressadas com valores entre 0 e 1 onde 1 é igual a 360° ou 4π.

Esse programa permite seu usuário tocar uma onda quadrado com um teclado midi. Ele é monofônico mas sua interpretação de dados midi é incompleta. Existem erros evidentes quando mais de uma tecla é acionada ao mesmo tempo. Essas limitações serão atacadas nos próximos posts.
O objeto notein dispara três números quando uma tecla midi é acionada. O terceiro outlet dispara o canal do instrumento, o segundo a velocidade ou volume expressado com valores entre 0 e 127 (7bits) e o primeiro a nota do teclado expressada em 7bits onde A 440hz = 57. Inverti a ordem aqui porque em PD objetos que disparam mais de um outlet seguem ordem de direita para esquerda.
Nesse programa desconsideramos o canal, a velocidade dividimos por 127 para pegar um valor em RMS entre 0 e 1 e a nota passamos pelo objeto mtof para pegar sua frequência.
7 Junho, 2007
DTMF p.4: Duol-tone multi-frequency
DTMF é um sintetizador monofônico que usa duas frequências no seu tom. É como seu telefone (não os dos seus avós) funciona.
| Hz | 1209 | 1336 | 1477 |
|---|---|---|---|
| 697 | 1 | 2 | 3 |
| 770 | 4 | 5 | 6 |
| 852 | 7 | 8 | 9 |
| 941 | * | 0 | # |
Essa tabela mostra as duas frequências que um discador aciona quando teclado. Com os exemplos anteriores podemos criar um synth DTMF.

Ai está, o único objeto novo é o random que dispara um número aleatório entre 0 e o valor do parâmetro (ou um valor que vem do inlet da direita).
O array $1.dmtfA aqui é um mapa entre os valores do teclado (*=>10, 0=>11,#=>12) e as frequências horizontais da tabela, enquanto o array $1.dtmfB faz o mesmo com as frequências verticais. Com isso temos as duas frequências que um discador gera.
29 Maio, 2007
DTMF p.3: Sequência em Memória (Arrays)

Baseado no programa A440wclick.pd, esse programa tem a sequência: raiz, quinta, e quarta num Array de 3 elementos (0, 7, 5) chamado $1.seq. Ao digitar 0, 1 ou 3 no campo, os intervalos correspondentes no array são tocados.
O objeto tabread aceita um parâmetro obrigatório que é referência a uma array. O inlet deste objeto recebe um número que é um Ãndice para ser lido no array. Do outlet sai o valor indexado.
O objeto mtof converte uma nota midi (0-127) para sua frequência. Também existe ftom.
Para saber sobre tabwrite confere com o help do pd clicando o botão direito neste objeto.
27 Maio, 2007
DTMF p.2: Oscilador com botão

Esse programa é feito a partir do programa A220.pd. O programa anterior somente gerava uma oscilação de 220 Hz continuo. Este programa adiciona um botão (bang) que aciona a oscilação por 100ms.
Quando o inlet de um objeto del (ou delay) é acionado por um bang ele acionara um bang na sua saida (outlet) após um tempo determinado no seu parâmetro ou no seu segundo inlet. Esse parâmetro é em milisegundos. Neste caso o delay é de 100ms.
Neste programa o delay, bang, e mensagens 0 e 1 são usados para permitir a saÃda do sinal do objeto osc~ por 100ms.
DTMF p.1: Um oscilador

Aqui está um oscilador feita em pure data (pd) afinado ao La, 220 Hz. Esse programa é simples, não faz muito. Pessoalmente só uso isso pra afinar instrumentos.
O objeto osc~ gera uma oscilação sinusóide, ele aceita um parâmetro que é a frequência. Esse valor pode ser controlado usando a primeira entrada (inlet). Esse inlet aceita um número ou um sinal.
O objeto *~ multiplica o sinal na esquerda pelo valor na direita. O primeiro inlet controle o valor da esquerda e segundo o da direita. O primeiro inlet tem que ser um sinal, o segundo pode ser sinal ou número. pd usa rms em seus cálculos.
O objeto dac~ é o digital to analog converter. É a interface de audio do computador. O primeiro inlet leva o sinal para esquerda e o segundo para direita.
Mais informações sobre o pd em português aqui.
