
Roteiro da aula sobre sntese subtrativa

- 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)

  ento 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 freqncia do filtro

- filtro com 2 zeros em R*e^{i*2*pi*f/SR} e R*e^{-i*2*pi*f/SR}:
  (obs: a freqncia angular associada  freqncia 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 exemplo2Z.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)

  ento (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 freqncia do filtro

- filtro com 2 plos 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 exemplo2P.pd e external filtro2P~.c)

- filtros com vrios plos e zeros podem ser criados diretamente
  a partir de H(z) (o que pode torn-los computacionalmente mais
  eficientes) ou simplesmente obtidos por composio de vrios
  filtros simples, em srie (respostas em freqncia multiplicadas)
  ou em paralelo (respostas em freqncia somadas).

  (ver exemplo exemplo2P8Z.pd)

- O mtodo de Karplus-Strong utilizado para simular sons de cordas
  pinadas parte do princpio da sntese subtrativa, filtrando
  sucessivamente um fragmento at o silncio. Procura imitar as
  seguintes caractersticas de cordas pinadas:

  (1) ataque ruidoso (o buffer  inicializado   com amostras aleatrias);
  (2) definio tonal aps ataque (o   buffer tem tamanho fixo associado
       freqncia do som desejado);
  (3) abafamento sucessivo dos agudos (atravs do filtro passa-
      baixa recirculante).

  Esquematicamente:

  buffer (tamanho M = SR/freq, inicializado com rudo)

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

  (ver exemploKS.pd e external KarplusStrong~.c)

