Implementação de filtros Filtros FIR Filtros IIR Geber Ramalho & Osman Gioia - UFPE 1 Implementação de filtros Abordagem • equações de diferença linear: filtragem construída a partir de atrasos e operações aritméticas simples • em engenharia: teoria matemática dos polos e zeros no espaço dos números complexos... Notação • • • • • • x[n] = amostra número n do sinal de entrada y[n+1] = amostra número n + 1 do sinal de saída D = atraso (delay) = atraso de uma amostra + = soma de sinais × = multiplicação do sinal por um fator Geber Ramalho & Osman Gioia - UFPE 2 Filtros IIR e FIR Dois tipos principais de filtros • Finite Impulse Response (FIR) • Infinite Impulse Response (IIR) FIR D + entrada IIR entrada Geber Ramalho & Osman Gioia - UFPE saída D + saída 3 Passa-Baixas FIR Equação • y[n] = (0,5 × x[n]) + (0,5 × x [n - 1]) Comentário • equivalente a encontrar a média aritmética de pares de amostras subseqüentes • efeito: “amaciar” a forma de onda (passa-baixas) Circuito/algoritmo a 0,5 entrada 1 × × + saída Fa/2 f 0,5 Geber Ramalho & Osman Gioia - UFPE Freqüência de amostragem 4 Passa-Altas FIR Equação • y[n] = (0,5 × x[n]) - (0,5 × x [n - 1]) Comentário • equivalente a enfatizar as diferenças entre pares de amostras subseqüentes • efeito: enfatizar altas freqüências (passa-altas) Circuito/algoritmo 0,5 entrada a 1 × × - saída Fa/2 f 0,5 Geber Ramalho & Osman Gioia - UFPE 5 Filtro FIR geral Equação: • y[n] = (a0 × x[n]) ± (a1 × x[n - 1]) ± ... (aj × x[n - j]) Circuito/algoritmo de filtro com j estágios x[n] ... a0 × a2 × aj ... × +/y[n] Geber Ramalho & Osman Gioia - UFPE 6 Filtro FIR geral A resposta do filtro dependerá de • quantidade de estágios do filtro (valor de j) • operações de adição ou subtração • coeficientes a1,..., aj Observações • quanto mais longo (mais estágios) for o filtro, mais estreita pode ser sua banda de transição (inclinação) • mas isto vai requerer mais computação • depois de certos estágios o ganho em precisão de corte do filtro é mínimo, não valendo a pena o custo benefício Geber Ramalho & Osman Gioia - UFPE 7 Aumento de estágios nos filtros FIR Passa baixas FIR de 15 estagios Geber Ramalho & Osman Gioia - UFPE Passa baixas FIR de 31 estagios 8 Filtro IIR simples Equação: • y[n] = (0,5 × x[n]) + (0,5 × y [n - 1]) Comentário • equivale a recursivamente adicionar vários estágios de um filtro FIR • soma com a saída anterior e divide por dois. Com coeficientes iguais a 0,5 => passa-baixas Circuito/algoritmo a 0,5 0,5 x[n] × × + Geber Ramalho & Osman Gioia - UFPE 1 y[n] Fa/2 f 9 Filtro IIR geral Equação • y[n] = (a0 × x[n]) + ... (am × x[n - M]) +/- b1 × y[n] +/- ... (bN × y[n - N]) ou simplesmente M N i 0 j 1 y[n] ai x[n i] b j y[n j ] Comentário • construído a partir das amostras anteriores de entrada (multiplicadas por um fator diferente de zero) e o feedback das amostras de saída Geber Ramalho & Osman Gioia - UFPE 10 FIR x IIR Custo computacional Linearidade da resposta de fase Estabilidade Geber Ramalho & Osman Gioia - UFPE FIR IIR ruim bom bom ruim bom ruim 11 Filtro de pente (comb filter) Equação • y[n] = x[n] + x [n - D] (FIR) Comentários • D é um atraso bem mais longo do que • Também é possível implementar com IIR y[n] = (a × x[n]) + (b × y[n - D]) Circuito/algoritmo FIR entrada Geber Ramalho & Osman Gioia - UFPE D + saída 12 Filtro de pente (comb filter) Interpretação intuitiva • Quando um sinal é superposto a ele mesmo com pequeno atraso, haverá momentos de reforço e cancelamentos de algumas freqüências com se fosse um pente (comb filter) Geber Ramalho & Osman Gioia - UFPE 13 Filtro Passa Tudo Equação • y[n] = (-g × x[n]) + x[n - D] + (g × y[n - D]) Comentários • g é chamado de ganho • o deslocamento de fase depende logaritmicamente do atraso D (0 < D < freq. de amostragem) Circuito/algoritmo g × x[n] + D + y[n] × -g Geber Ramalho & Osman Gioia - UFPE 14 Filtro Passa Tudo Idéia • não altera o espectro mas impõe mudança de fase que depende da freqüência de x Geber Ramalho & Osman Gioia - UFPE 15 Efeitos de atraso de tempo Efeitos com atraso (delay) fixo e variável reverberadores Geber Ramalho & Osman Gioia - UFPE 16 DDL Digital delay line ou digital delay unit • Colocar amostras de entrada na memória antes de mandá-las para saída misturando com amostras não atrasadas • base para um série de efeitos de processamento • parecido com o filtro passa baixas FIR e com o pente, a diferença sendo o tempo de atraso – no PB FIR, D = uma amostra – no pente, D = 0,1-10 ms – no DDL, D > 15 a 20 ms Tempo de Amplitude do atraso sinal atrasado DDL tempo Geber Ramalho & Osman Gioia - UFPE × D tempo entrada × amplitude do sinal original + saída 17 Implementando a DDL: fila circular A cada ciclo (período de amostragem) • lê-se a amostra mais antiga O • escreve-se em seu lugar a nova amostra N • incremementa-se a posição do ponteiro (tap) Com esta técnica (único ponteiro - single tap) • implementa-se um atraso fixo, proporcional ao tamanho da fila Ciclo k 7 8 1 Ciclo k + 1 7 2 O 6 5 4 Geber Ramalho & Osman Gioia - UFPE 8 1 2 tap 3 N 6 5 O 4 3 tap 18 Multitap Delay Line Pode-se implementar atrasos mais curtos, mais longos e variáveis na mesma fila circular • Permitindo que o ponteiro “bata” (tap) em qualquer ponto da fila e que haja mais de uma “batida” Para 2 taps: A cada ciclo • simultaneamente, duas amostras são lidas nas posições tap1 e tap2 • a nova amostra é escrita na posição O • todas as posições são incrementadas de 1 tap1 variando-se o incremento • dinamicamente, pode-se implementar um valor de atraso variável Geber Ramalho & Osman Gioia - UFPE 8 1 tap2 7 2 N 6 5 O 4 3 19 Efeitos de atraso fixo 2 Tipos de atraso: fixo ou variável • Atraso fixo pode ser pequeno, médio e longo e gera efeitos como ecos e duplicação • Atraso variável gera efeitos como flanging, phasing, chorus Atraso fixo pequeno: D < 10ms • introduz anomalias na resposta em freqüência • D = algumas amostras, funciona como filtro passa baixas FIR • 0,1ms < D < 10ms, funciona como um filtro pente Geber Ramalho & Osman Gioia - UFPE 20 Efeitos de atraso fixo Atraso fixo médio: 10 ms < D < 50ms • cria ambiência e dá ilusão de aumento da intensidade • cria efeito de duplicação “doubling”, pois sinal atrasado e original se fundem DDL tempo tempo Atraso fixo longo: D > 50ms • cria ecos • Observação: ecos múltiplos podem ser criados realimentando-se o circuito DDL Geber Ramalho & Osman Gioia - UFPE tempo tempo 21 Efeitos de atraso variável Circuito Efeito “avião”: filtro pente sanfona Geber Ramalho & Osman Gioia - UFPE 22 Efeitos de atraso variável Parâmetros • • • • velocidade das variações (freqüência do LFO) profundidade das variações (amplitude do LFP) forma de onda do LFO (senoidal, triangular, ...) atraso central D D Geber Ramalho & Osman Gioia - UFPE 23 Efeitos de atraso variável Flanging (0ms < D < 20ms) • muito cancelamento devido ao filtro pente, que vira uma “sanfona” • nome: polegar na borda (flange) do carretel da fita do gravador de rolo http://www.youtube.com/watch?v=NAqQvs_WXs8&feature=related Chorus (D > 20 ms) • ouve-se a cópia do som, como se fosse um “coro” • é um tipo de efeito de duplicação mais realista http://www.youtube.com/watch?v=zmN7fK3fKUE&feature=related Geber Ramalho & Osman Gioia - UFPE 24 Flanging x Phasing Mesma classe de efeito mas obtida de forma diferente Flanging: • atraso variável independente da freqüência da entrada • Cria muitos vales que seguem o padrão filtro-pente Geber Ramalho & Osman Gioia - UFPE 25 Efeitos de atraso variável Phasing: • atraso variável dependente da freqüência da entrada (não lineridade do passa tudo). • Cria poucos vales. Por isso, soa mais suave que o flanging http://www.youtube.com/watch?v=rpdFZ5VDGDs Geber Ramalho & Osman Gioia - UFPE 26 Reverberação História • Anos 60: Manfred Shoeder, da Bell Labs, implementou os primeiros algoritmos de reverberação Um reverberador • filtro com resposta ao impulso que se assemelha à resposta de uma sala predelay Geber Ramalho & Osman Gioia - UFPE 27 Reverberação O efeito de Reverberação divide-se em 3 partes • som direto • primeiras reflexões – pode ser simulado com uma DDL “batida” em diferentes pontos • reverberação fusionada (fused reverberation) – precisa de mais densidade do que uma DDL pode prover – a sua implementação pode ser feita a partir de dois filtros básicos: filtros pente e/ou filtros passa tudo É desejável... • manipular cada uma das 3 partes da reverberação de forma relativamente independente, além do pre-delay Geber Ramalho & Osman Gioia - UFPE 28 Filtro Pente IIR g × entrada amplitude Reverberação c/ filtros pente D + saída Resposta ao impulso D 3D 5D ... tempo Comentário • quando atraso < 10ms o efeito restringi-se basicamente à resposta em freqüência • quando atraso > 10ms, cria-se uma séries de ecos igualmente espaçados que decaem exponencialmente • Tempo que leva para saída cair 60dB – decayTime = (60 - g) loopDelay onde g (dB) e loopDelay = D/taxa de amostragem (s) Geber Ramalho & Osman Gioia - UFPE 29 Reverberação c/ filtros passa-tudo g x[n] + g × 1-g2 D × × + y[n] amplitude Filtro Passa Tudo IIR D g2 Resposta ao impulso g3 g4 3D g5 g6 5D ... tempo -g Comentários • quando o tempo de atraso é longo (5-100 ms), cria-se uma séries de ecos igualmente espaçados que decaem exponencialmente Geber Ramalho & Osman Gioia - UFPE 30 E aí? Resumo • tanto o passa tudo quanto o pente são filtros que podem gerar múltiplos ecos, mas como gerar a reverberação fusionada? Solução • conectar vários filtros • conexão em paralelo: soma dos ecos • conexão em série: multiplicação dos ecos – mais eficiente, porém menor controle • Shoeder propôs dois esquemas de conexão Geber Ramalho & Osman Gioia - UFPE 31 Esquema: pente + passa tudo entrada Pentes em paralelo para evitar anomalias no espectro. Um compensa o efeito do outro Passatudo em série para evitar anomalias na resposta de fase. Um compensa o efeito do outro Pente 1 Pente 2 Pente 3 Pente 4 + Passa tudo 1 Passa tudo 2 Saída reverberada Geber Ramalho & Osman Gioia - UFPE 32 Esquema: só passa tudo entrada Cada passa tudo gera 4 ecos audíveis, o que implica que este esquema gera 1024 ecos Dica geral • A característica do som dependerá da escolha do tempo de atraso e ganho de cada unidade de reverberação • melhor escolher tempos de atraso primos entre si para que os ecos coincidam o mínimo possível Passa tudo 1 Passa tudo 2 Passa tudo 3 Passa tudo 4 Passa tudo 5 Saída reverberada Geber Ramalho & Osman Gioia - UFPE 33 Alguns Parâmetros da reverberação Tipo de sala: pode ser hall, chamber, plate ou gate Tamanho: tempo de atraso entre as unidades de reverberação Predelay: tempo até a reverberação começar Atraso de entrada: inverte a relação causa-efeito (reverberação aparece antes do sinal Tempo de reverberação: tempo de decaimento Difusão: densidade do eco Mix: razão entre entrada e saída Geber Ramalho & Osman Gioia - UFPE 34 Pitch shifting & Time stretching Geber Ramalho & Osman Gioia - UFPE 35 Alterações em altura e tempo Seria útil alterar a altura (pitch) da voz e intrumentos... • para corrigir “desafinações” • criar efeitos Seria útil ajustar durações de sinais de áudio para casarem em intervalos de tempo determinados Fluxo de mídia em tv Geber Ramalho & Osman Gioia - UFPE 36 Reamostragem (resampling) Um sinal amostrado em uma freqüência pode ser reamostrado http://www.youtube.com/watch?v=67UlfiEd6mk Geber Ramalho & Osman Gioia - UFPE 37 Reamostragem (resampling) Sub-amostragem (Downsampling) • Para reduzir a amostragem de um fator M, pega-se apenas as m-ésimas amostras do sinal. Sobre-amostragem (Upsampling) • Para aumentar a amostragem de um fator L, adicionase L-1 zeros entre duas amostras e depois filtra-se o sinal com uma passa baixa (equivalente a interpolar) Mix • Para reduzir de um fator M/L (racional), faz uma sobreamostragem de L seguida de uma sub-amostragem de M Geber Ramalho & Osman Gioia - UFPE 38 Alterações em altura e tempo Problema da Reamostragem • a mudança na altura está associada à mudança na duração Time stretch • processo que mudar a duração de um sinal de áudio sem alterar a sua altura Pitch Shift • processo que muda a altura do sinal de áudio sem afetar a duração • Pitch correction: Ao invés de aplicar o mesmo “desvio” em todo o sinal, altera nota por nota para se adequar ao tom escolhido Geber Ramalho & Osman Gioia - UFPE 39 Time stretch Como muda a duração sem mudar o pitch? No domínio do tempo (pouco usado) • Overlap Add Method e Synchronized Overlap Add Method: Divide o sinal em quadros pequenos que são eliminados e depois o sinal é interpolado Geber Ramalho & Osman Gioia - UFPE 40 Time stretch No domínio da frequencia: Phase vocoder • Converte sinal do tempo para o domínio da freqüência, modifica amplitudes e fases, e reconverte para o domínio do tempo • Basicamente altera o número de ciclos de freqüências componentes de um sinal, sem mudar quais são as freqüências. • Introduz algumas anomalias (reverberação) http://www.youtube.com/watch?v=O3_ihwhjHUw Geber Ramalho & Osman Gioia - UFPE 41 Pitch shift Como muda a altura sem mudar a duração? • Muda a duração do sinal e depois reamostra Nem todos os métodos funcionam bem em todo tipo de sinal e há limitações nos desvios (de pitch e de tempo) que eles podem fazer • Orquestra: 5 semitons (limite de pitch shift) e 30% (limite de tempo) • Instrumento monofônico: uma oitava e 200% do tempo Geber Ramalho & Osman Gioia - UFPE 42 Referências Pohlman, Ken. (1995) Principles of Digital Audio. McGraw Hill, 3rd Edition http://www.dspdimension.com/admin/time-pitch-overview/ http://www.soundonsound.com/sos/mar06/articles/qa0306_ 1.htm http://www.geofex.com/Article_Folders/phasers/phase.html Maranhão, Suzana (2006). Ajuste Elástico em Tempo de Exibição para Fluxos de Áudio Comprimido. Diss. de mestrado. PUC-RJ http://en.wikipedia.org/wiki/Audio_timescalepitch_modification Geber Ramalho & Osman Gioia - UFPE 43