Segundo Trabalho (menor)
Segundo Trabalho (menor, para nota)
Entrega 4a-feira dia 17/04 antes da aula (13:55)
Neste trabalho nós completaremos um rastreador de frequência fundamental que começamos a fazer juntos em aula (arquivo pitchtracker.pd disponível no PACA). O objetivo é converter aquele patch em uma abstração com as seguintes características:
1) (Este é o ponto principal e a razão do exercício) Você deve melhorar a estimativa usando interpolação parabólica em torno do maior pico do espectro de magnitude. Especificamente, se k é o índice do pico obtido pelo patch pitchtracker.pd, e sendo F[k-1], F[k] e F[k+1] os valores do espectro de magnitude nestes 3 índices, o polinômio interpolador é F(x) = A(X-k)^2+B(X-k)+C onde A=(F[k+1]-2*F[k]+F[k-1])/2, B=(F[k+1]-F[k-1])/2 e C=F[k], e o valor de x (correspondendo a um índice fracionário do espectro) que maximiza F(x) será dado por x=k-B/2A.
2) A abstração deve ter duas entradas, sendo um [inlet~] para um sinal de áudio e um [inlet] para o tamanho do bloco de análise (uma potência de 2), e um [outlet] para a frequência (em Hz) correspondente ao maior pico
3) A saída deve ser produzida a cada bloco de análise; para isso você pode usar um [bang~] dentro da abstração para disparar o analisador uma vez a cada bloco.
4) Os gráficos do exemplo feito em aula não são necessários para a abstração, mas podem ajudá-lo a depurar sua implementação. Você pode redimensioná-los para o tamanho do bloco de análise enviando o tamanho do bloco para uma mensagem da forma "; tabela resize $1".
5) Teste sua abstração fazendo um patch que gere um sinal senoidal com frequência controlada por um slider (como a parte superior do pitchtracker.pd), analise este sinal usando seu novo pitchtracker, e imprima o erro relativo da estimação, dado por 100*abs((frequência estimada)-(frequência do oscilador))/(frequência do oscilador). Compare este valor com o erro máximo produzido pela estimação crua que fizemos em aula, dado por (0.5*(taxa de amostragem)/(tamanho do bloco))/(frequência do oscilador). Nesta escala, 6% corresponde a um erro de um semitom e 100% corresponde a um erro de uma oitava. A melhoria será especialmente grande nas frequências baixas (sons graves).
Bom Trabalho!