330 likes | 517 Views
Implementação de filtros. Filtros FIR Filtros IIR. 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
E N D
Implementação de filtros Filtros FIR Filtros IIR
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
+ + D D IIR FIR entrada saída entrada saída Filtros IIR e FIR • Dois tipos principais de filtros • Finite Impulse Response (FIR) • Infinite Impulse Response (IIR)
a 0,5 1 × × + f entrada saída Fa/2 0,5 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 Freqüência de amostragem
0,5 × × - entrada saída 0,5 a 1 f Fa/2 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
× × × x[n] . . . a0 a2 aj . . . +/- y[n] 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
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
Aumento de estágios nos filtros FIR Passa baixas FIR de 15 estagios Passa baixas FIR de 31 estagios
a 1 × × + f Fa/2 0,5 0,5 x[n] y[n] 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
Filtro IIR geral • Equação • y[n] = (a0 × x[n]) + ... (am × x[n - M]) +/- b1 × y[n] +/- ... (bN × y[n - N]) ou simplesmente • 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
+ D entrada saída 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
Delay (ms) 10 0 Freqüência (Hz) 0 1000 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
× + + × g D x[n] y[n] - g 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
Efeitos de atraso de tempo Efeitos com atraso (delay) fixo e variável reverberadores
× × + Tempo de atraso Amplitude do sinal atrasado D entrada saída amplitude do sinal original 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 amplitude amplitude DDL tempo tempo
8 8 1 1 7 7 2 2 Ciclo k 6 6 3 3 N 4 4 5 5 tap O O 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 + 1 tap
8 1 7 2 tap1 tap2 6 3 N 4 5 O 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 • variando-se o incremento • dinamicamente, pode-se implementar um valor de atraso variável
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
amplitude amplitude DDL tempo tempo amplitude amplitude DDL tempo tempo 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 • Atraso fixo longo: D > 50ms • cria ecos • Observação: ecos múltiplos podem ser criados realimentando-se o circuito
Efeitos de atraso variável • Circuito • Efeito “avião”: filtro pente sanfona Bateria seca e c/ flanging (flanger-ss1.wav)
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
Efeitos de atraso variável • Flanging (0ms < D < 20ms) • muito cancelamento devido ao filtro pente • nome: polegar na borda (flange) da fita de rolo • 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 D = 1 ms e 4 ms (flanger-ss2.wav) Profundidade = 2 ms e 6 ms (flanger-ss3.wav) Progressão seca e com chorus (chorus-ss1.wav) Profundidade = 3 ms e 6 ms (chorus-ss2.wav)
predelay 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)
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
+ × g D amplitude entrada saída tempo D 3D 5D ... Reverberação c/ filtros pente Resposta ao impulso Filtro Pente IIR • 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) loopDelayonde g (dB) e loopDelay = D/taxa de amostragem (s)
× + + × × g g g2 1-g2 g3 amplitude D x[n] y[n] g4 g5 g6 tempo D 3D 5D ... - g Reverberação c/ filtros passa-tudo • Comentários • quando o tempo de atraso é longo (5-100 ms), cria-se uma séries de ecos igualmente espaçados que decaem exponencialmente Filtro Passa Tudo IIR Resposta ao impulso
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
entrada + Pente 1 Pente 2 Pente 3 Pente 4 Passa tudo 1 Passa tudo 2 Saída reverberada Esquema: pente + passa tudo • 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
entrada Passa tudo 1 Passa tudo 2 Passa tudo 3 Passa tudo 4 Passa tudo 5 Saída reverberada Esquema: só passa tudo • 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
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
Harmony Central • http://www.harmonycentral.com/Effects/effects-explained.html