MAC 337/5900 - Computação Musical
Aula 10 - 13/9/7 -
Mais sobre o Pd
Tabelas de Ondas (Wavetables) e Samplers
- De 1950 a 1990 a forma principal de manipulação de
amostras sonoras na música eletroacústica eram as fitas
magnéticas.
- Amostras sonoras podiam ser recortadas, tocadas de trás prá frente ou tocadas em diferentes velocidades.
- Isso mudou no final da década de 1980 com a entrada em cena de meios de armazenamento digital.
- A partir de meados da década de 1990, os sons
começaram a ser gravados quase que exclusivamente em
formato digital.
- O formato digital permite fazer todas as
manipulações que se faziam antes (de forma mais
fácil) e outras novas (por exemplo, manipulação da
forma de onda).
- Agora podemos considerar que a amostra sonora é simplesmente uma tabela de onda (wabetable)
ou, usando um termo mais preciso da Ciência da
Computação, um vetor onde cada posição
contém uma amostra em um dado instante.
- Podemos então percorrer este vetor de diferentes formas e manipular seu conteúdo de formas arbitrárias.
- Além das formas canônicas de percorrer o vetor (de 1
em 1 do início para o fim e do fim para o começo),
podemos usar outras formas.
- Em particular, podemos usar uma função (ou um outro
vetor) para determinar a ordem na qual os elementos do vetor
serão percorridos. Exemplo: Fig 2.2, página 30.
Oscilador de tabelas de ondas (Wavetable oscillator)
- Usando um oscilador de onda dente de serra para percorrer as
amostras de uma tabela de onda (Fig 2.3 a), podemos criar um oscilador
de tabelas de formas de onda.
- É comum criar tabelas com RMS ou amplitude de pico = 1 e
multiplicar a saída por um gerador de envoltória, assim a
amplitude resultando é a amplitude da envoltória que
é aplicada (as tabelas são normalizadas). Exemplo: (Fig.
2.3 b).
- Tabelas de onda são usadas para se gerar sons com espectro fixo e timbre fixo.
- Têm a vantagem de serem mais leves computacionalmente mas
são menos flexíveis (do que um sintetizador FM por
exemplo).
- Uma forma de variar o timbre é ter dois ou mais tabelas
(banco de formas de onda) e varia de uma para outra dinamicamente.
- Por exemplo, para alternar de uma tabela para outra, podemos fazer o seguinte:
- usamos x[n] para controlar qual tabela usamos; com x[n] = 0 usamos a tabela y, com x[n] = 1 usamos a tabela z;
- com valores entre 0 e 1 usamos uma mistura ponderada de ambas as tabelas;
- o som resultante será então (1 - x[n]) . y[n] + x[n] . z[n]
- que é equivalente a y[n] + x[n] . (z[n] - y[n])
- o que é obtido com o circuito da Fig. 2.4.
Amostragem (Sampling)
- "Sampleamento" (blerght) é algo que se tornou uma prática comum na década de 1990 com o advento de samplers comerciais.
- Inicialmente, eram máquinas muito caras (em geral mais
caras que sintetizadores equivalentes) que só alguns poucos
estúdios profissionais ou bandas famosas tinham acesso.
- Hoje em dia, é possível fazer exatamente o mesmo em
qualquer computador pessoal, não é mais necessário
hardware específico dedicado a esta tarefa.
- Um sampler é um
instrumento capaz de gravar pequenas amostras de áudio de
comprimento variando de uma fração de segundo (por
exemplo, 1 décimo de segundo) até alguns segundos e de
tocar, normalmente em loop estas amostras pré-gravadas.
- Por exemplo, podemos gravar 0.2 s de som de uma flauta,
armazenar em uma tabela e usar esta tabela com um oscilador de tabela
de onda para gerar um timbre de flauta de qualquer
duração.
- Se mudarmos a velocidade com que percorremos a tabela, mudamos a altura da nota (freqüência).
- Por exemplo, percorrendo a tabela no dobro da velocidade,
obtemos a oitava acima; na metade da velocidade, na oitava abaixo.
Multiplicando por 3/2, 5a acima. por 21/12, um semitom acima.
- No entanto, transpor a nota desta forma, transpõe o timbre também.
- Instrumento reais e a voz humana, possuem formas de onda (harmônicos) diferentes em regiões diferentes.
- Para obter uma imitação mais perfeita, precisamos
de amostras para cada região (por exemplo, para cada oitava).
- Wavetable oscillators e samplers na verdade são a mesma coisa.
- Se a taxa de remetição do som gravado é abaixo de 20Hz, costuma-se dizer que temos um sampler.
- Se a taxa é acima de 40Hz (até alguns KHz), costuma-se dizer que temos um wavetable oscillator.
- Também, não é necessário tocar a
tabela de amostras inteira, podemos tocar apenas trechos dela e mudar
isso dinamicamente.
- Esta é a abordagem usada normalmente em Síntese Granular (que estudaremos mais para frente).
- Um Looping Sampler que pode ser usado neste contexto é mostrado na Fig. 2.5.
Envoltórias em Samplers
- Se estamos tocando amostras em loop e pulando de uma tabela para
outro, irão ocorrer discontinuidades no final e no início
da tabela (1a e última posição do vetor).
- Estas descontinuidades soam como um clique (tique) e devem ser evitadas.
- O início deve conter uma subida suave, começando do 0.
- O fim deve ir morrendo suavemente, até chegar ao 0.
- 50 ms, como vimos na aula passada, é suficiente para eliminar o clique (provavelmente depende do hardware).
- A forma mais simples de fazer isso é ao criar a tabela de onda inicialmente.
- Mas isso nem sempre é possível
- por exemplo quando queremos usar trechos do meio da tabela de onda
- ou quando queremos alterar dinamicamente as características do ataque e do final da nota.
- Portanto, samplers costumam ter geradores de envoltória
(funções rampa associadas à amplitude) no
início e no final de cada tabela.
- Usamos então uma envoltória que repete na mesma taxa da tabela de onda. Fig. 27.
- Só que isso geraria silêncios no final de cada
leitura da tabela. Para evitar isso, usa-se muitas vezes duas
versões da mesma tabela em fases diferentes, soando
simultaneamente. Assim o som de uma esconde o silêncio da
outra.
- A Fig. 28 mostra uma técnica para se obter ondas dentes de serra com uma defasagem de fase de tamanho a.
Esticamento de Timbres
- Não precisamos nos limitar a fazer um loop das tabelas, concatenando-as em seqüência.
- Podemos inserir espaços de silêncio de diferentes durações entre cada repetição.
- Podemos sobrepor as amostras, ou seja, começar a
próxima iteração do laço antes de terminar
a anterior.
- Mantemos a freqüência com a qual a tabela é tocada mas alteramos o duty cycle, i.e., a parcela do tempo durante a qual a tabela está sendo tocada.
- A Fig. 29. mostra 3 versões, sempre com período = 20 ciclos mas com duty cycle variando: 100%, 50% e 200%.
- Uma análise de Fourier detalhada (ver pags. 40-43) mostra que variando o duty cycle, variamos os harmônicos do som.
- Assim, como mostra a Fig. 20, esta é uma técnica para se mudar o timbre dinamicamente e continuamente.
Interpolação
- É uma técnica para melhorar a precisão de algoritmos baseados em consultas a tabelas.
- Se queremos gerar uma senóide com taxa de amostragem 44100
a partir de uma tabela de 441 amostras de contendo uma senóide,
usamos os valores da tabela para calcular os valores
intermediários através de interpolação.
- A interpolação para um valor x não presente na tabela é feita através de um polinômio
- de grau zero: equivalente a pegar o ponto mais próximo a x da tabela
- de grau um: equivale a traçar uma linha reta entre os dois pontos adjacentes da tabela e pegar o valor y da reta para a absissa igual a x
- de grau dois: equivale a traçar uma parábola entre 3 pontos próximos a x.
- de grau três... etc.
- Se a tabela tem poucos pontos, a interpolação vai
gerar mudanças de timbres muito perceptíveis,
principalmente se for uma interpolação de ordem menor.
- Ao implementarmos a interpolação temos que tomar cuidado com os extremos iniciais e finais da tabela.
Exemplos no Pd
- B01.wavetables:
- baseado no tabosc4 que é um oscilador de tabelas de onda baseado em interpolação com 4 pontos.
- ver Ajuda do tabosc4
- B02.two-wavetables:
- uma tabela usada para controlar a freqüência de um segundo oscilador de tabela.
- testar com variações no sig~, na tabela inferior e, por fim, na tabela superior.
- B03.tabread4:
- usa o tabread4 (leitor de uma tabela) que permite maior controle sobre a ordem a precorrer a tabela
- aplica a técnica do esticamento de timbres que nós vimos.
- B04.tabread4.interpolation:
- mostra como funciona a interpolação em um caso extremo.
- B05.tabread4.FM:
- sintetizador de FM baseado em oscilador de tabela.
- experimentar mudar parâmetros da FM e depois conteúdo da tabela.
- depois experimentar com freqüência de modulação bem baixa.
- B06.table.switching:
- dicas sobre manipulação de tabelas.
- B07.sampler:
- máquina de riscos: simula VJ operando um disco de vinil
- B08.sampler.loop:
- loucuras mil
- note que podemos gravar uma amostra e depois refina-la manualmente com o mouse para eliminar picos e descontinuidades.
Referências
Próxima Aula
Página de MAC
337/5900
Página do Fabio
Página do
DCC