
Synth baseado no Pad Synth do Nasca Octavian Paul
Bom para cordas.
download
É só abrir o zip no caminho do PD.


Synth baseado no Pad Synth do Nasca Octavian Paul
Bom para cordas.
download
É só abrir o zip no caminho do PD.
Faz tempo que não atualizo os artigos sobre Pd. Isso logo mudará. Estou no processo de criação de um curso de programação em Pd para o Plano B. Com um grupo de alunos e uma base de comunicação mais matura poderei voltar a fazer exemplos e exercícios tanto em programação como teoria de musica de computador.
Por enquanto da uma olhada na tradução da documentação em português no estudolivre.org. Ainda não está completa (vamos ver se mudamos isso). O curso é baseado no segundo capitulo.

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 para facilitar a leitura do programa. Seu parâmetro pode ser 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.
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.
[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.
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.

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.

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.