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]) ± ... (ai × x[n - i]) 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: Filtro ETA (exponential time average) • 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 FIR IIR Custo computacional ruim bom Linearidade da resposta de fase bom ruim Estabilidade bom ruim Geber Ramalho & Osman Gioia - UFPE 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 Passa Tudo Idéia • não altera o espectro mas impõe mudança de fase que depende da freqüência de x • percebe-se os ataques e decaimentos mais abruptos Delay (ms) 10 0 0 Geber Ramalho & Osman Gioia - UFPE 1000 Freqüência (Hz) 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 Efeitos de atraso de tempo Efeitos com atraso (delay) fixo e variável reverberadores Geber Ramalho & Osman Gioia - UFPE 15 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-1 ms – no DDL, D > 1ms Tempo de Amplitude do atraso sinal atrasado DDL tempo Geber Ramalho & Osman Gioia - UFPE × D tempo entrada × amplitude do sinal original + saída 16 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 da próxima posição amostra mais antiga O 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 17 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 18 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 19 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 20 Efeitos de atraso variável Circuito Efeito “avião”: filtro pente sanfona Bateria seca e c/ flanging (flanger-ss1.wav) Geber Ramalho & Osman Gioia - UFPE 21 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 22 Efeitos de atraso variável Flanging (0ms < D < 20ms) • muito cancelamento devido ao filtro pente • nome: polegar na borda (flange) da fita de rolo D = 1 ms e 4 ms (flanger-ss2.wav) Profundidade = 2 ms e 6 ms (flanger-ss3.wav) 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 Progressão seca e com chorus (chorus-ss1.wav) Profundidade = 3 ms e 6 ms (chorus-ss2.wav) Geber Ramalho & Osman Gioia - UFPE 23 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 (reverb-ss1.wav) predelay Geber Ramalho & Osman Gioia - UFPE 24 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 25 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 26 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 27 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 28 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 29 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 30 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 31 Harmony Central http://www.harmonycentral.com/Effects/effectsexplained.html Geber Ramalho & Osman Gioia - UFPE 32