MAC 337/5900 - Computação Musical
Aula 9 - 11/9/7 -
Pure Data (Pd)
- Miller S. Puckette em 1988 criou um programa chamado Max que
utilizava uma linguagem gráfica, baseada em blocos e
interconectores, para gerenciar em tempo real aspectos de controle de
músicas, principalmente MIDI.
- O nome do software é uma homenagem a Max Mathews, um dos pais da Computação Musical.
- Posteriormente, quando os computadores passaram a ser capazes de
manipular áudio em tempo real, David Zicarelli adicionou o MSP
ao Max fazendo com que um computador caseiro pudesse se transformar
numa poderosa estação de processamento de áudio em
tempo real.
- Max/MSP foi desenvolvido pelos dois no IRCAM, em Paris, nos anos de 1993 e 1994.
- Max/MSP é hoje em dia o programa mais utilizado por
compositores contemporâneos de música erudita
(eletroacústica).
- É também usado em outras áreas como bandas de rock, DJs, VJs, etc.
- Outros programas relacionados mas menos usados hoje em dia:
CSound e Super Collider (este último, similar ao CSound mas com
comandos que permitem fazer laços, estruturas de dados
complexas e outras construções que ajudam em
composição algorítmica.
- Puckette e Zicarelli posteriormente se mudaram para a California.
- Zicarelli fundou uma empresa que comercializa o Max, MSP e o JITTER (extensão para processamento de vídeo).
- Puckette se tornou professor da UCSD, escreveu uma
versão equivalente do Max/MSP de código aberto chamada
Pure Data (Pd).
- Com Max/MSP e Pd qualquer um pode criar timbres desinteressantes instantaneamente.
- Criar timbres interessantes também é fácil mas requer um pouco de estudo e prática.
- Com Pd seremos capazes de sintetizar, gravar, processar e analisar música.
- Estas atividades se estabeleceram na música
contemporânea como uma prática comum a partir dos anos
1948-1952.
- Mas, ao contrário da época dos pioneiros,
não é necessário se estar em um dos grandes
centros de música experimental do planeta; qualquer um com um
simples computador vendido em qualquer hipermercado pode fazer
Computação Musical hoje em dia!
Ondas sinusoidais, amplitude e freqüência
- Um som digital, como já vimos, é algo da forma: ...; x[n - 1]; x[n]; x[n + 1]; ...
- Uma onda sinusoidal é o exemplo mais freqüente: x[n] = a cos(ωn + ø)
- onde a é a amplitude, ω é a freqüência angular e ø é a fase.
- Um sinal sinusoidal com taxa de amostragem R, tem freqüência audível:
- Os dois jeitos mais comuns de se medir a amplitude são:
- Amplitude de pico: Apeak{x[n]} = max |x[n]|; n = M, ... , M + N - 1
- RMS (root mean square), i.e., raiz da média dos quadrados:
- ARMS{x[n]} = \sqrroot{ P{x[n]} }
- onde P {x[n]} = (1/N) (|x[M]|2 + ... + |x[M + N - 1]|2)
- Ver exemplos de ambos na Fig. 1.2, pp. 4.
- No entanto, como a nossa percepção de intensidade
do som tem mais a ver com a energia da onda do que com a amplitude,
é comum fazermos uma conversão logarítmica dos
valores, o que é chamado de dB, ou decibel.
- onde a0 é uma amplitude de referência.
- dobrar a amplitude, significa aproximadamente somar 6,02 dBs
- dobrar a energia, significa aproximadamente somar 3,01 dBs
- A Fig. 3.1 mostra a relação entre decibeis e amplitude.
- Amplitude linear de 0 é equivalente a - infinito dB.
- Em áudio digital, supondo que a amplitude máxima do hardware é 1, é comum adotar-se
- a0 = 10-5 = 0,00001
- neste caso a amplitude máxima é 100 dB e 0 dB é provavelmente inaudível
- Convenientemente, a gama de amplitude que um ser humano é
capaz de ouvir, entre a amplitude que danifica o ouvido e a amplitude
praticamente inaudível, é cerca de 100 dB também.
- A relação entre amplitude e intensidade percebida
não é muito exata: dois sons com mesma amplitude de pico
ou mesmo RMS, não necessariamente vão soar com a mesma
intensidade.
- No entanto, aumentar em 3dB um sinal vai, com segurança, fazer um som soar um "passo" mais forte.
- Em Computação Musical, é comum variar a amplitude de duas formas:
- multiplicando um sinal por uma constante, por exemplo y . x[n], onde y é um valor positivo.
- multiplicando um sinal por uma função que varia
lentamente, por exemplo, y[n] . x[n], onde y[n] varia bem lentamente,
como por exemplo, um LFO, low-frequency oscilator, que vimos no exemplo do trêmulo com o CSound.
- Caso ambas as funções variem rapidamente, aí
o que temos não é uma mudança na amplitude
percebida, mas sim uma modulação de amplitude, que gera
uma variação no timbre.
- Freqüências, também são representadas
comumente com uma escala logarítmica, também devido
à forma como a percebemos.
- Os intervalos musicais, são dados pela relação entre as freqüências fundamentais de duas notas.
- Na música ocidental, a oitava (intervalo 2:1) é
dividida em 12 intervalos iguais, correspondendo a uma
relação 21/12, chamados de semitons.
- Na escala do padrão MIDI:
- subir um semitom equivale a somar 1.
- o Lá 440 é equivalente à nota 69.
- intervalor menores do que um semitom podem ser representados
por frações (não comum na música
convencional).
- Para converter entre uma altura MIDI m e uma freqüência f em Hz, aplicamos as seguintes fórmulas:
- m = 69 + 12 . log2(f/440)
- f = 440 . 2(m-69)/12
- O dó central, C3, corresponde a MIDI m = 60 e freqüência f = 261,626 ciclos por segundo.
- Um semitom corresponde a um aumento em freqüência da ordem de 6%.
- Semitons são divididos em cents, cada um correspondendo a um centésimo de semitom.
- De forma geral, são necessários 3 cents para que um ouvido bem treinado perceba alguma variação no som.
Introdução a Pd
- Arquivos do Pd são chamados de patches.
- Um patch é uma coleção de caixas interconectadas em uma rede.
- A lateral direita da caixa indica como o texto dentro dela é interpretado e como a caixa funciona.
- Caixa de mensagem: tem
a lateral como de uma bandeira e interpreta o texto como uma mensagem a
ser enviada para sua saída, assim que a caixa é ativada
(por uma mensagem que chega ou por um clique do mouse).
- Caixa de objeto: possui
a lateral quadrada e interpretam o texto para instanciar objetos quando
o patch é carregado na memória. É o tipo mais
comum de caixa no Pd. A primeira palavra indica a classe do objeto e as
demais são parâmetros passados ao construtor quando o
objeto é criado. O separador é o espaço.
- Caixa de número:
possui a borda chanfrada e armazena um número. Este
número é jogado para a sua saída quando a caixa
é ativada. Ele pode ser alterado com o mouse ou digitando-se um
novo valor.
- Construir exemplo 21 (caixa de mensagem) + 3 (caixa de objeto) = 34 (caixa de número).
- As linhas conectoras podem carregar dois tipos de dados:
- linhas finas carregam mensagens de controle esporádicas.
- linhas grossas carregam um fluxo contínuo, normalmente um sinal de áudio.
- Objetos interessantes:
- osc~ x
- gera um sinal na freqüência dada x através de um oscilador sinusoidal.
- entrada: um valor indicando a freqüência (que pode alterar a freq. inicial x)
- saída: um sinal digital na freqüência dada.
- ver a ajuda online dando um duplo clique em cima do objeto em modo de edição.
- *~ x
- multiplicador
- pode multiplicar tanto pelo x dado quanto por um valor dado na entrada direita
- multiplica o valor dado na entrada esquerda e joga na saída
- dac~
- recebe um ou mais sinais digitais na entrada e joga para o conversor digital-analógico.
- o padrão é ter duas entradas gerando uma saída sonora em estéreo.
- Exemplos:
- A01 sinewave
- Note a caixa de mensagem que manda a mensagem dsp 1 e dsp 0 para o objeto global pd
- o ; serve apenas para enviar uma mensagem vazia antes da
mensagem para o objeto pd (não entendi para que serve mas
não funciona sem ela; acho que sem o ponto e vírgula, ele
enviaria a mensagem para a saída e não para o objeto que
se está determinando).
- A02 amplitude
- Deve-se digitar uma amplitude em decibeis na caixa de
número ou então usar o mouse para aumentar ou diminuir o
valor.
- A03 line - gerador de envoltória linear
- O objeto line~ gera uma rampa linear de valores, atingindo o
valor da entrada esquerda no tempo especificado, em milissegundos, pela
rampa direita.
- Veja como nesse exemplo, podemos enviar valores para
várias entradas através de linhas conectadas unicamente
à primeira entrada.
- Construir um patch onde controlamos a amplitude e a freqüência de um oscilador através de dois controles deslizantes.
- A04 line 2 - gráficos em tabelas
- A05 - aninhamento
- síntese aditiva utilizando o objeto somador +~
- tríade maior, i.e., acorde com razão 4:5:6
- output~ é um subpatch gravado no disco, no arquivo output.pd
- A06 - conversão
- MIDI <-> Freqüência
- envio e recebimento de mensagens sem linhas, usando send (s) e receive (r)
- $1 é o primeiro parâmetro (isso evita um laço infinito)
- A07.fusion.pd
- Síntese aditiva baseada nos harmônicos
- A07 - Modulação de freqüência (FM)
- podemos ver aqui como variações na
freqüência da portadora, na freqüência da
moduladora e no índice da modulação alteram o
timbre e a forma de onda.
- A08 - Revisão geral
Referências
Próxima Aula
Página de MAC
337/5900
Página do Fabio
Página do
DCC