MAC 337/5900 - Computação Musical

Aula 27 - 27/11/7

Palestra

Nome Completo: Prof. Marcelo Gomes de Queiroz

Institui��o: DCC-IME-USP

T�tulo: Teoria e Projeto de Filtros Digitais

Material: Patches Pd

Roteiro da aula sobre filtros:

- exemplos de filtro passa-baixa (y(n)=0.5*(x(n)+x(n-1)))
  e passa-alta (y(n)=0.5*(x(n)-x(n-1)))

- transformada z: X(z) = \sum_{n=-\infty}^{\infty} x(n)z^{-n}

- Se y(n)=a0*x(n)+a1*x(n-1)+...+aM*x(n-M)

  ent�o Y(z) = (a0+a1*z^{-1}+...+aM*z^{-M})*X(z)

  de onde H(z) = Y(z)/X(z) = a0+a1*z^{-1}+...+aM*z^{-M}
  � a resposta em freq��ncia do filtro

- filtro com 2 zeros em R*e^{i*2*pi*f/SR} e R*e^{-i*2*pi*f/SR}:
  (obs: a freq��ncia angular associada � freq��ncia f em Hz
        � 2*pi*f/SR, onde SR � a taxa de amostragem)
  
  H(z) = (1-R*e^{i*2*pi*f/SR}z^{-1})*(1-R*e^{-i*2*pi*f/RS}z^{-1})
       = 1-2*R*cos(2*pi*f/SR)*z^{-1}+R^2*z^{-2}

  y(n) = x(n)-2*R*cos(2*pi*f/SR)*x(n-1)+R^2*x(n-2)

  (ver exemplo teste2Z.pd e subpatch filtro2Z.pd)

- Se y(n)=a0*x(n)+a1*x(n-1)+...+aM*x(n-M)-b1*y(n-1)-b2*y(n-2)-...-bNy(n-N)

  ent�o (1+b1*z^{-1}+...+bM*z^{-M})Y(z) = (a0+a1*z^{-1}+...+aM*z^{-M})*X(z)

  de onde H(z) = Y(z) = a0+a1*z^{-1}+...+aM*z^{-M}
                 ----   --------------------------
                 X(z)    1+b1*z^{-1}+...+bM*z^{-M}

  � a resposta em freq��ncia do filtro

- filtro com 2 p�los em R*e^{i*2*pi*f/SR} e R*e^{-i*2*pi*f/SR}:

  H(z) = 1/((1-R*e^{i*2*pi*f/SR}z^{-1})*(1-R*e^{-i*2*pi*f/SR}z^{-1}))
       = 1/(1-2*R*cos(2*pi*f/SR)*z^{-1}+R^2*z^{-2})

  y(n) = x(n)+2*R*cos(2*pi*f/SR)*y(n-1)-R^2*y(n-2)

  (ver exemplo teste2P.pd e external filtro2P~.c)

- filtros com v�rios p�los e zeros podem ser criados diretamente
  a partir de H(z) (o que pode torn�-los computacionalmente mais
  eficientes) ou simplesmente obtidos por composi��o de v�rios
  filtros simples, em s�rie (respostas em freq��ncia multiplicadas)
  ou em paralelo (respostas em freq��ncia somadas).

  (ver exemplo teste2P8Z.pd)

- O m�todo de Karplus-Strong utilizado para simular sons de cordas
  pin�adas parte do princ�pio da s�ntese subtrativa, filtrando
  sucessivamente um fragmento at� o sil�ncio. Procura imitar as
  seguintes caracter�sticas de cordas pin�adas:

  (1) ataque ruidoso (o buffer � inicializado   com amostras aleat�rias);
  (2) defini��o tonal ap�s ataque (o   buffer tem tamanho fixo associado
      � freq��ncia do som desejado);
  (3) abafamento sucessivo dos agudos (atrav�s do filtro passa-
      baixa recirculante).

  Esquematicamente:

  buffer (tamanho M = SR/freq, inicializado com ru�do)

  -----------        ---------------------
  |!@(*&%$+#|  --->  | 0.5*(x(n)+x(n-1)) | ---> y(n)
  -----------   |    ---------------------  |
                |                           |
                |         ----------        |
                <---------| z^{-M} |<--------
                          ----------

  (ver exemplo testeKS.pd e external KarplusStrong~.c)

- O m�todo de s�ntese por formantes consiste em associar filtros
  passa-banda em paralelo, cujos p�los s�o definidos por regi�es
  de formantes. No caso da s�ntese de vogais, existem tabelas
  para estes formantes (ver Moore, Elements of Computer Music,
  pg. 392 tabela 3-10). Estes filtros podem ser aplicados sobre
  sinais com espectros ricos, como ru�dos, tons "cheios" (onda
  quadrada, triangular, dente-de-serra, etc.) ou m�sicas.

  (ver exemplo testeFORM.pd)


Próxima Aula
Página de MAC 337/5900
Página do Fabio
Página do DCC