2017 FilipeMiguelRibeiro TCC
2017 FilipeMiguelRibeiro TCC
2017 FilipeMiguelRibeiro TCC
UNIVERSIDADE DE BRASÍLIA
FACULDADE DE TECNOLOGIA
UNIVERSIDADE DE BRASÍLIA
Faculdade de Tecnologia
Banca Examinadora
REFERÊNCIA BIBLIOGRÁFICA
RIBEIRO, F. M. (2017). TRATAMENTO DE SINAL DE ÁUDIO NA REALIZAÇÃO DE UM
EFEITO DIGITAL RESSONANTE SELETIVO EM FREQUÊNCIA Reverb Shimmer. Trabalho de
Conclusão de Curso, Departamento de Engenharia Elétrica, Universidade de Brasília, Brasília,
DF, 69 p.
CESSÃO DE DIREITOS
AUTOR: Filipe Miguel Ribeiro
TÍTULO: TRATAMENTO DE SINAL DE ÁUDIO NA REALIZAÇÃO DE UM EFEITO
DIGITAL RESSONANTE SELETIVO EM FREQUÊNCIA Reverb Shimmer.
GRAU: Engenheiro Eletricista ANO: 2017
É concedida à Universidade de Brasília permissão para reproduzir cópias desto Trabalho de Con-
clusão de Curso e para emprestar ou vender tais cópias somente para propósitos acadêmicos e
científicos. Os autores reservam outros direitos de publicação e nenhuma parte desso Trabalho de
Conclusão de Curso pode ser reproduzida sem autorização por escrito dos autores.
Dedico este trabalho, primeiramente, ao meu Deus Yahweh por ter me dado sabedoria,
saúde e muita perseverança. À minha esposa, Letícia Mila de Araújo Ribeiro, por todo
amor imensurável e de não ter medido esforços para que eu chegasse até esta etapa da
minha vida.
Ao Prof. Daniel Café, meu orientador, pela condução de fazer buscar do conhecimento
necessário para a realização deste trabalho. À minha família, em especial da minha
esposa (Família Araújo) pelo amor e carinho demonstrados. À Universidade de Brasília
que me propiciou conhecimento e recursos para a conclusão deste trabalho. Aos meus
colegas de trabalho da Agência Nacional de Aviação Civil, em especial ao Dir. Ricardo
Bezerra, por colaborar indiretamente com incentivo, força e grande empatia com meu
curso. A todos que fizeram parte da minha formação, muito obrigado.
Efeitos digitais de áudios podem ser úteis em diversas aplicações, tais como hardwares para ins-
trumentos musicais, softwares de instrumentos virtuais (VST - Virtual Studio Technology) muito
utilizados por DJ’s e gravação de voz. Um dos efeitos digitais de áudio já conhecido na literatura é
chamado de reverberação ou reverb. No entanto, há uma variante atualmente pouco documentada
sobre o assunto que consiste no tratamento de um sinal de áudio utilizando um filtro ressonante
seletivo em frequência conhecido como shimmer. Neste trabalho, é proposta a implementação em
software de um modelo matemático do efeito digital shimmer e na utilização desse modelo a ser
executado num microcontrolador MSP430.
ABSTRACT
Digital audio effects may be useful in a variety of applications such as hardware for musical
instruments, peformance VST - Virtual Studio Technology for DJ‘s and voice recording. One
of the digital audio effects already known on the market is called reverb. However, there is
a currently unsatisfactorily documented variant on the subject of peformance an audio signal
using a frequency selective resonant filter known as shimmer. In this paper, it is proposed the
implementation in software of a mathematical model of the digital effect shimmer and peformance
this model to be implemented in an MSP430 microcontroller.
SUMÁRIO
1 I NTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 C ONTEXTUALIZAÇÃO E D EFINIÇÃO DO P ROBLEMA . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 M OTIVAÇÃO DO T RABALHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 E FEITO DE AMBIENTIZAÇÃO : Reverberação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.3 T IPOS DE R EVERB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.4 P ITCH S HIFTING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 C OMPARATIVO ENTRE SOLUÇÕES DE H ARDWARE . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 M ICONTROLADORES E DSP’ S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 M ICROCONTROLADOR MSP430F5529 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 O BJETIVOS DO T RABALHO E D IAGRAMA DE B LOCO DO P ROJETO . . . . . . . 8
3 I MPLEMENTAÇÃO DO P ROJETO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1 B LOCO 0 - C ONVERSÃO A/D NO MSP430 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.1 A NÁLISE DE Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.2 R EQUISITOS DE H ARDWARE PARA A T EMPO DE A MOSTRAGEM . . . . . . . . . . . 30
3.2 B LOCO 1 - F ILTRO FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.1 PARA O CÓDIGO E XPERIMENTAL DO MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.2 PARA O PROJETO DO MSP430 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
vii
3.3 B LOCO 2 - I MPLEMENTANDO O Pitch-Shifter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.1 A NÁLISE DO A LGORITMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 B LOCO 3 - D ELAY T IME - R EVERB EM C ONVOLUÇÃO . . . . . . . . . . . . . . . . . . . . . . 43
3.5 B LOCO 4 - C ONVERSÃO D/A - C OMUNICAÇÃO I2 C E MCP 4725 . . . . . . . . 44
3.5.1 L IMITAÇÕES DO MSP430F5529LP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5.2 C ARACTERÍSTICAS DO Hardware E O PERAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4 S IMULAÇÕES E RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1 D ESCRIÇÃO DOS E XPERIMENTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 A NÁLISE DOS R ESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 D O DESEMPENHO DO C ÓDIGO MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.2 D ESEMPENHO DO DAC-MCP4725 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5 C ONCLUSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.1 R EALIZAÇÃO DO P ROJETO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.2 L IMITAÇÕES DO T RABALHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.3 T RABALHOS F UTUROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
REFERÊNCIAS BIBLIOGRÁFICAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
A PÊNDICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
I.1 C ÓDIGOS EM MATLAB RELACIONADOS AO T RABALHO P ROPOSTO . . . . . 61
LISTA DE FIGURAS
1.1 Ilustração do efeito de Reverberação. Fonte: Livro Digital Audio Effects ............. 1
1.2 Resposta de um Impulso de uma sala pequena. ............................................... 2
1.3 Câmara de reverb de mola de um amplificador ............................................... 3
1.4 Pequeno protótipo de um reverb de placas. .................................................... 3
1.5 Ilustração da resposta em frequência da nota A4 sendo tocada em diferentes ins-
trumentos musicais. .................................................................................. 4
1.6 Deslocamente de altura/frequência que resultou no deslocamento do tom C - dó
para o tom E - mi ..................................................................................... 6
1.7 Foto modelo Eventide H9 - Effects Processor - fonte: www.eventide.com ............ 6
1.8 Pedal Strymon BigSky - fonte: www.strymon.com .......................................... 7
1.9 Identificação da família de microcontroladores da Texas Instruments. Fonte:
http://www.ti.com/lit/an/slaa534/slaa534.pdf.................................................. 8
1.10 Diagrama de Blocos Principal do Projeto....................................................... 9
ix
3.11 Ilustração Geral da Etapa do algoritmo phase-vocoder ..................................... 38
3.12 Ilustração Específica das Etapas do algoritmo do phase-vocoder ........................ 39
3.13 Janelamentos .......................................................................................... 39
3.14 Ondas senoidais com pequena diferença na frequência e fase. ............................ 40
3.15 Reamostragem do Sinal utilizando duas vezes o valor da amostra anterior ............ 42
xi
1 INTRODUÇÃO
Numa sala, ou em qualquer ambiente acústico, existe um caminho direto pelo qual uma fonte
de áudio qualquer pode ser ouvida, no entanto, as respectivas ondas sonoras também podem
percorrer caminhos mais longos devido à reflexão em objetos sólidos, tais como paredes, tetos,
antes delas chegarem ao receptor.
Parte da energia dessas ondas é absorvida pela reflexão. Além disso, ondas que chegam ao
receptor através de um caminho indireto percorrem distâncias maiores que o caminho direto.
Dessa forma, chegam ao receptor com um som mais fraco.
Essas amostras de som atrasadas e atenuadas ocorridas no evento da emissão do som original
é o que denominamos de reverberação.
Figura 1.1: Ilustração do efeito de Reverberação. Fonte: Livro Digital Audio Effects
O efeito de reverberação é mais que uma série de ecos. Segundo (REISS, 2014), um eco pode
ser entendido como o resultado de uma soma, de ondas com um atraso menor de 40 (quarenta)
1
milissegundos. Dessa forma, não é possível distinguir as diferentes fontes sonoras e o efeito dessa
combinação é a percepção de um som prolongado.
Nesse sentido, podemos também considerar que a reverberação do som é mais do que um
simples dispositivo de delay com retorno. No reverberação a taxa em que as reflexões chegarão
muda ao longo do tempo, em oposição de termos apenas que simular reflexões que tenham um
intervalo fixo entre elas. Essas reflexões são relacionadas a posição do som que o receptor está na
sala, ao tipo de construção da sala (oval, retangular), tamanho e material das paredes.
O efeito reverberação pode ser implementado com uma cadeia de atrasos do mesmo sinal que
diminuem em amplitude de modo a simular o comportamento acústico de um espaço real. Temos
no mercado diversos tipos de reverbs, que podem ser classificados da seguinte forma:
´ Spring ("Reverb-de-mola") - O efeito de reverberação com mola é um método que foi pri-
meiramente proposto por Hammond em 1940s (ABEL; BERNERS, 2006). A reverberação
de mola foi criada naturalmente, por um sistema mecânico, que se baseia num transdutor
e um captador nas extremidades de uma mola, para criar e capturar vibrações dentro dela
(figura 1.3). Muitos amplificadores de guitarra incluem esse tipo de reverberação dentro
de seus projetos. Existem ainda muitos pedais de reverberação que oferecem esse efeito
emulado digitalmente e apenas algumas companhias1 oferecem produtos com um sistema
real de reverberação de molas, devido ao custo envolvido.
2
Figura 1.3: Câmara de reverb de mola de um amplificador
‚ Room ("Reverb-sala") - Este tipo de reverberação é usado para simular um som natural
de uma sala acústica, de tamanho pequeno. Esses reverbs possuem reflexões curtas que
desaparecem rapidamente com o tempo.
‚ Hall ("Reverb-palco") - Reverb’s dessa categoria são usados para simular um tipo de
reverberação encontrado num grande teatro, catedrais ou igrejas. Eles "soam"geralmente
mais fortes do que um room reverb por conta da quantidade de reflexões serem significati-
vamente maiores e mais longas.
´ Altura - Pitch: está relacionada com a frequência do som. Assim distinguimos os sons
mais altos como os de maior frequência (mais agudos) e os mais baixos como os de menor
frequência (mais graves).
´ Tom: podemos afirmar que todo tom é composto de uma altura específica, associada as
notas musicais. Por exemplo, a nota (A - lá) é composta pela frequência/altura de A4 ´
440Hz essa mesma nota A pode ter uma altura mais alta igual a A5 ´ 880Hz ou mais baixa
A3 ´ 220Hz. Por outro lado a frequência 442Hz não representa nenhum tom, apesar que é
considerado uma determinada frequência (altura) relativa do som.
3
´ Intensidade: está ligada à quantidade de energia transportada pelo som. Desta forma, con-
forme a intensidade do som dizemos que ele é mais forte (a onda possui maior amplitude)
ou mais fraca (a onda possui menor amplitude).
´ Timbre: O timbre é considerado a qualidade que faz com que o som seja distinguido na
mesma intensidade e na mesma altura, mesmo sendo emitidos por fontes diferentes. Isso se
dá pela forma de como os harmônicos, ou seja, as frequências múltiplas responsáveis pelo
timbre, estão dispostas no espectro de frequência, conforme podemos observar na figura
1.5. Este fato ocorre pelo fato dos harmônicos acompanharem o som de cada instrumento
variando assim em intensidade e quantidade. Isso da para cada instrumento uma forma de
onda diferente - figuras 1.5(b) e 1.5(c). Portanto podemos dizer que o timbre de um som
está relacionado à respectiva forma de onda.
Figura 1.5: Ilustração da resposta em frequência da nota A4 sendo tocada em diferentes instrumentos
musicais.
Com esses conceitos preliminares podemos descrever que o efeito pitch-shift como o des-
locamento de frequência/altura do sinal, ou seja, é a manipulação do sinal em desloca-lo
em frequência para valores convenientemente escolhidos.
Esse efeito de reverberação será o foco de desenvolvimento desse trabalho. A variante shim-
mer tem se tornado bem comum entre pedais de guitarra principalmente nesses últimos anos. A
grosso modo, essas reverberações adicionam componentes espectrais do som original para elevar
o tom ou criar harmonia. A simulação desse efeito adiciona no final do prolongamento do som
componentes de frequência do sinal com altura mais altas.
4
Este som tem características bem peculiares, as quais geralmente as pessoas associam a um
som de "orquestra angelical"ou sintetizadores de teclado, dando uma intensa ambiência e atmos-
fera no som.
Diferente dos demais reverbs, o Shimmer é um efeito eminentemente sintetizado2 , ou seja,
produzido digitalmente por meio de algoritmos embarcados em Processadores de Sinais Digitais
- DSP e comercializados como equipamentos de produção digital.
A escala musical é dividida em várias oitavas. Cada oitava é composta por 12 (doze) semitons,
também referenciados como meio salto.
Cada nota corresponde a uma frequência fundamental que a compõe. Essa frequência é defi-
nida pela equação 1.1, onde p corresponde ao número de semitons e f a frequência em Hertz.
Sob a óptica de sinais e sistemas, um pitch shifting consiste em deslocar a frequência funda-
mental por um fator específico. A equação consiste na obtenção da frequência final ff inal dado a
frequência inicial finicial , e os números de semitons "s"os quais pretende deslocar.
Como já mencionado, existem 12 semitons por oitava. Isso implica que cada transposição
para cima ou para baixo de uma oitava é equivalente na escala do espectro a multiplicar por 2
ou 1/2 respectivamente. A figura 1.6 ilustra as componentes das notas C e E (com um fator de
2p4{12q ) percebe-se um deslocamento de frequência/altura - pitch shift de 4 semitons acima (de C
para E).
Nesta seção listaremos os principais fabricantes, na industria de pedais de guitarra, que pro-
duzem pedais com reverb-shimmer.
1. Eventide H9: A Eventide, Inc. (também conhecida anteriormente como Eventide Clock
Works Inc., ou hoje simplesmente como Eventide) é uma companhia de áudio, transmissões,
2
Vale destacar que o efeito puramente de reverberação já é conhecido e manipulado por diversos hardwares e
softwares no mercado. Note-se que estamos falando do efeito adicional incorporado ao produto que é o chamado
shimmer.
5
Figura 1.6: Deslocamente de altura/frequência que resultou no deslocamento do tom C - dó para o tom E
- mi
comunicações e aviônica dos Estados Unidos cuja divisão de áudio produz processadores
de áudio, software DSP e efeitos de guitarra. Eventide foi uma das primeiras companhias
a produzir processadores de áudio digital e seus produtos são fundamentais em gravação
e reprodução de som, pós-produção e estúdios de transmissão. Ela possui um pedal de
guitarra chamado H9 (figura 1.7) que embarca diversos tipos de efeito e possui grande
poder de processamento, com qualidade profissional num formato compacto. Neste pedal
é possível importar algoritmos de efeitos de modulação, de repetição e diversas ambiências
tal como o efeito de reverb shimmer tudo através de sua entrada serial universal (USB)
utilizando um software proprietário. Infelizmente não temos muitas informações seguras
acerca das especificações de hardware do produto.
6
Figura 1.8: Pedal Strymon BigSky - fonte: www.strymon.com
reinvenção da roda em termos de qualidade dos efeitos e o resultado esperado pelo usuário
final. Características técnicas do produto:
O termo sistemas embarcados define uma classe de circuitos eletrônicos que utilizam proces-
sadores digitais (microprocessadores ou microcontroladores, etc.) em aplicações dedicadas.
Os microcontroladores, diferentemente dos microprocessadores possuem uma unidade de pro-
cessamento em conjunto com periféricos num único chip como: memórias, barramentos, timers,
portas de comunicação e conversores A/D. Esses dispositivos possuem um desempenho menor
que os microprocessadores, mas são ideais em aplicações que necessitam de menores dimensões,
tempo de desenvolvimento e custos (OLIVEIRA, 2010).
Temos ainda, dentro desse contexto, o processador digital de sinais (DSP - Digital Signal
Processing). Os DSP’s são construídos para computar de forma eficiente equações de diferenças
e algoritmos de transformadas diversas (como a Discrete Fourier Transform - DFT). As aplicações
dos DSP’s, em suma, estão relacionadas com sistemas de controle, realizações de filtros digitais,
transformadas rápidas de Fourier, processamento de sons e imagens, e outras.
7
1.2.2 Microcontrolador MSP430F5529
8
(a) Modelo 1 - Modelo com sinal original sem atuação do reverberação
A verificação do modelo dar-se-a por meio dos resultados de amostras de áudio e avaliando
por meio de percepção auditiva e gráficos espectrais a eficiência do referido modelo.
Outro objetivo é analisar o desempenho do microcontrolador nas etapas de conversão analó-
gica digital e digital analógica, bem como possível implementação e limitações no processamento
do código a ser embarcado no microcontrolador.
O sistema também é composto de um par de conversores nas extremidades. Um conversor
A/D para digitalizar um sinal analógico e permitir o processamento digital do sinal e um conversor
D/A que converte o resultado do processamento em tensão analógica.
9
2 EXPLANAÇÃO TEÓRICA E FERRAMENTAS
Neste capítulo será abordado o referencial teórico necessário para o modelo proposto. Além
disso trataremos de explicar uma ferramenta utilizada no projeto para dimensionamento da filtra-
gem utililizando um filtro de resposta finita.
ż8
Xpf q “ F rxptqs “ xptqe´j2πf t dt (2.1)
´8
8
ÿ
xs ptq “ xpnTs qδpt ´ nTs q (2.2)
n“´8
A transformada de Fourier neste caso para o sinal xs ptq, pode ser obtida da seguinte forma:
1
Um sinal contínuo amostrado é uma sequência de impulsos, enquanto que um sinal em tempo discreto apresenta
a mesma informação em uma sequência de números. Todos os conceitos aplicados a sinais amostrados se aplicam a
sinais em tempo discreto.(HAYKIN; VEEN, 2001)
10
Xs pf q “ F rxptqδTs ptqs “ Xpf q ˚ ∆Ts pf q “
8 8
ÿ ÿ (2.3)
Xpf q ˚ fs δpf ´ kfs q “ fs Xpf ´ kfs q
k“´8 k“´8
Nota-se que o sinal Xs pf q é periódico com período fs hertz. Considerando uma largura
espectral do sinal Xpf q como B, em que Xpf q “ 0 para |f | ě fs {2 - isto é, B ď fs {2, ou,
de forma análoga fs ě 2B.
Dessa forma podemos avaliar o sinal Xpf q como sendo:
, para |f | ă fs {2, se fs ě 2B
Se fs ě 2B, é possível obter Xpf q a partir do sinal discreto Xs pf q e, por consequência,
reconstruir xptq a partir de xs ptq. Esse resultado é conhecido como teorema da amostragem.
No nosso caso concreto, teremos que utilizar esses conceitos para avaliar uma taxa de amos-
tragem coerente com a qualidade do sinal de áudio, bem como conceitos relativos ao tipo de
método usado para representar digitalmente amostras de um sinal analógico, por exemplo o som
da guitarra ou de voz.
Vale também salientar que o espectro Xs pf q pode ser obtido calculando-se diretamente a
transformada de Fourier de xs ptq usando-se as equações (2.1) e (2.2), pode-se mostrar que:
ż8 8
ÿ
Xs pf q “ loxosmo
ptqon e´j2πf t dt “ xpnTs qe´j2πf nTs (2.5)
´8 n“´8
xpnTs qδpt´nTs q
8
ÿ
Xpf q “ Ts xpnTs qe´j2πf nTs (2.6)
n“´8
Nota-se que a equação (2.6) pode ser usada também para o cálculo numérico2 de Xpf q.
Apesar dessa discretização do sinal ainda tratamos de um sinal com somatório infinito, que,
em geral, não será possível de ser calculado. Portanto, esse somatório precisa ser truncado, e
2
A expressão dada equação (2.6) para Xpf q é a mesma que se obtém utilizando a regra do trapézio para solu-
cionar numericamente a equação (2.1), contudo com essa abordagem é mais difícil visualizar com clareza aspectos
importantes e limitações desse cálculo numérico. (LATHI, 1995)
11
consequentemente, não se terá mais a igualdade da equação (2.6), mesmo que Xpf q “ 0 para
|f | ě fs {2.
Uma consideração acerca desse truncamento é dada pela equação abaixo, para n P r0, N ´ 1s:
N
ÿ ´1
X̂pf q “ Ts xpnTs qe´j2πf nTs (2.7)
n“0
Uma forma de tratar o truncamento, por questões de continuidade, é considerar o sinal como
resultante do truncamento realizado por meio da multiplicação desse sinal com um sinal wptq de
duração finita. Geralmente wptq é um sinal retangular. Chamamos o sinal wptq de sinal-janela ou,
simplesmente janela3 .
Assim definimos o sinal xw ptq como sendo:
N
ÿ ´1
X̂pf q “ Ts xw pnTs qe´j2πf nTs (2.9)
n“0
Podemos considerar que a aproximação da equação (2.9) é idêntica a fornecida pela equação
(2.7) pois, considerando que o sinal wptq é uma janela retangular4 , então xw pnTs q “ xpnTs q, para
n P r0, N ´ 1s.
Todavia o somatório dessas equações, embora finito, não poderá ser transformado em uma
expressão analítica válida para qualquer |f | ă fs {2. Isto é, para cada valor de f dado, para o qual
se deseje determinar X̂pf q, será preciso calcular o referido somatório, o que não é nada prático.
Uma alternativa é o cálculo de X̂pf q para valores de f espaçados de:
fs
∆f “ (2.10)
N
Ou seja, para f “ k∆f , k P Z
3
Um efeitoA dispersão espectral é causada por descontinuidades criadas pelo uso de um número não inteiro de
períodos do sinal original, e pode ser melhorada pelo uso do janelamento. Nesse sentido o objetivo do janelamento é
reduzir a amplitude das descontinuidades nas bordas de cada sequência finita adquirida pelo digitalizador (INSTRU-
MENTS, 2016). #
4
´
t´Tw {2
¯ 1, 0 ď t ă Tw
wptq “ rect Tw “
0, c.c
12
Assim, usando a equação5 (2.9), para |k| ď N {2:
N ´1 N ´1
ÿ sf ÿ 2π
nTs
X̂pk∆f q “ Ts xw pnTs qe ´j2πk
N “ Ts xw pnTs qe´j N kn (2.11)
n“0 n“0
Finalmente definindo o sinal de tempo discreto xw rns “ xw pnTs q, a equação (2.11) pode ser
reescrita como:
N ´1
ÿ fs
X̂pk∆f q “ Ts xw rnse´j2πk N n (2.12)
n“0
Os filtros digitais não contém uma implementação física em si, diferentemente dos filtros ana-
lógicos constituídos, geralmente, de associação de resistores e capacitores. Eles são construídos
através de algoritmos.
Para que isso possa ocorrer é necessário que o sinal de áudio (analógico) seja devidamente
convertido em um sinal digital. esse sinal portanto convolui por um algoritmo de filtro adequado.
De maneira geral, o projeto de um filtro consiste em obter os coeficientes para os filtros. Isso
é realizado através de uma equação chamada de equação das diferenças. O processo pode ser
simplesmente realizado pela equação (2.13):
n
ÿ
Saida “ Coeficienten do filtro ˚ Amostran (2.13)
1
Assim, o contexto de um filtro digital estará associado a equações de diferenças (ou funções
de transferência no domínio Z) cujo parâmetros (coeficientes) serão calculados com o objetivo de
discriminar (extrair, atenuar, etc.) determinadas componentes espectrais presentes em um sinal
ou uma informação no mesmo sentido dos filtros analógicos, sem a necessidade de um circuito
5
Sendo |f | ă fs {2 e f “ k∆f , portanto |f | “ |k||fs {2| ñ |k| ą N {2.
13
(hardware) adicional (ROBERTS, 1987). Em outras palavras, o filtro digital será uma rotina
adicional agregada ao algoritmo responsável pela realização do sistema proposto em questão.
Os filtros digitais de resposta infinita ao impulso (Infinite Impulse Response - IIR), também
conhecidos como filtros recursivos ou autorregressivos, são modelados pela equação de diferença
2.14 ou pela função de transferência 2.15, em que basicamente os valores dos coeficientes dos
modelos define a natureza do filtro (passa-baixa; passa-alta; passa-faixa; rejeita-faixa).
A denominação de IIR se deve que a saída do modelo decai para um valor nulo em um tempo
infinito em resposta a um impulso aplicado na entrada filtro correspondente.
˜ ¸
M N
1 ÿ ÿ
ypkq “ bm xpk ´ mq ´ an ypk ´ nq (2.14)
a0 m“0 n“1
ypzq b0 ` b1 z ´1 ` ... ` bm z ´m
Dpzq “ “ (2.15)
xpzq a1 z ´1 ` an z ´n
Os filtros de resposta finita ao impulso (Finite Impulse Response - FIR), também conhecidos
como filtros não recursivos ou de média nível, são modelados pela equação de diferenças (2.16)
ou pela função de transferência (2.17), em que basicamente os valores dos coeficientes dos mode-
los define a natureza do filtro (passa-baixa; passa-alta; passa-faixa; rejeita-faixa). A denominação
FIR se deve a saída do modelo decair para um valor nulo em um tempo finito em resposta a um
impulso aplicado na entrada do filtro correspondente. Como características dessa categoria de fil-
tros, pode-se citar que eles são inerentemente estáveis (ao contrário dos filtros IIR), e apresentam
variação de fase linear na faixa de frequência de operação (uma condição apropriada para apli-
cações em sistemas com modulação/demodulação de fase) (PINHEIRO, 2017). Podemos ainda
14
visualizar através da figura 2.1 a representação do filtro em diagrama de fluxo de sinais - figura
2.1(a) e diagrama de blocos - figura 2.1(b).
N
ÿ ´1
xpnq “ bk xpn ´ kq (2.16)
k“0
ypzq
Dpzq “ “ b0 ` b1 z ´1 ` ... ` bn z ´n (2.17)
xpzq
A forma usual de calcular os coeficientes de um filtro digital FIR consiste em utilizar modelos
de respostas ideais dos filtros e funções janelas associadas.
Na figura 2.2 encontra-se uma ilustração de uma expressão conhecida como função Sinc, em
que wn {π.Sincpwn i{πq “ sinpwn iq{πi.
15
Observando o exemplo da função Sinc, nota-se que os valores das amplitudes desta tendem
teoricamente aos limites não realizáveis ´8 ă i ă 8, conforme já mencionamos na seção 2.1.1.
Com a finalidade de truncar os valores correspondentes dos coeficientes dos filtros FIR associados
em valores finitos, são empregadas funções janelas com este propósito e que também influenciam
as atenuações resultantes dos filtros. A tabela 2.1 mostra as principais funções janelas que são
utilizadas nos projetos de filtros FIR, em que o valor prático de atenuação β é indicado para cada
função janela.
Retangular ´21 1
´ ¯
2|n´ N |
Bartlett ´25 1´2 N
2
` 2πn ˘
Hanning ´44 0, 5 ` 0, 5.cos N
` 2πn ˘
Hamming ´53 0, 5 ` 0, 46.cos N
` 2πn ˘ ` 4πn ˘
Blackman ´74 0, 42 ` 0, 5.cos N
` 0, 08.cos N
(a) Um filtro não recursivo como o filtro FIR é inerentemente estável. Conforme pode ser visto
na função de transferência 2.17 ela é especificada em termos do zeros apenas no plano-z.
Logo não há grandes preocupações em termos da escolha dos coeficientes que possam causar
instabilidade no sistema, posto que seu Lugar Geométrico das Raízes - LGR encontra-se
estritamente dentro do semi-plano esquerdo do domínio-z.
16
(b) O filtro FIR (resposta ao impulso) tem forma simétrica no seu espectro de frequência. Isso
produz uma característica de fase linear ideal, ou seja, é equivalente a puramente um atraso
temporal em todas as componentes de frequência passando pelo filtro. Em outras palavras,
podemos dizer que o filtro FIR não tem o fenômeno de distorção de fase (LYNN; FUERST,
1998).
Exemplo 2.2.1 Um pequeno exemplo de aplicação do projeto de filtro digital FIR (passa-baixa) e
uma função de janela Blackman, considerando uma quantidade de 7 (sete coeficientes) chamado
comumente de Tap’s.
Considerando uma taxa de amostragem igual a f a “ 200Hz e uma frequência de corte fc “
f1 “ 40Hz, têm-se: fnorm “ f1 {pfa {2q “ 0.4; ω1 “ 0.4π. Computando a resposta ideal do filtro
em questão, num intervalo ´pN ´ 1q{2 ď n ď pN ´ 1q{2 com a função janela especificada Jpnq
` ˘ ` ˘
(Blackman - tabela 2.1).(for n=-3; n < 4; n++)0, 42 ` 0, 5.cos 2πn 7 ` 0, 08.cos 4πn
7 ;
Pode-se computar a resposta ideal de um filtro passa baixa cuja função é descrita como:
senpw1 nq w1
hpnq “ hp0q “ (2.18)
πn π
Daí, finalmente, temos os valores dos coeficientes do filtro:
bpnq “ Jpnq.hpnq
17
11 xlabel('t[s]'); ylabel('x(t)="..."; y(t)= "___" ');
Vale destacar nesse exemplo que, por conta da janela Blackman possuir 1 coeficiente a mais
comparado a outros modos de janela (um termo cosseno extra - 0, 08 cosp4πn{N q), ela contribui
para a redução das oscilações de Gibbs, porém sua amplitude torna-se independente da ordem do
filtro. Ademais, esse termo adicional também reduz a amplitude dos lóbulos laterais, melhorando
assim o tamanho do lóbulo principal (CHAKRABORTY, 2013).
Outro detalhe importante, conforme visto na figura 2.5(a), é que o lóbulo principal, por exem-
plo, da janela retangular tem aproximadamente a metade da largura do lóbulo principal da janela
Hamming;
18
(a) Resposta em frequência dos modos de Janela- (b) Resposta dos janelamento no do-
mento. mínio do tempo
Figura 2.5: Resposta dos diferentes tipos de janelamentos no domínio do tempo e da frequência.
Os filtros adaptativos são constituídos por estruturas FIR, em que os coeficientes dos modelos
associados são modificados conforme um procedimento adaptativo. essa modalidade de filtro
geralmente é empregada nos seguintes contextos (lista não exaustiva):
A equação 2.19 representa o modelo de um filtro FIR, em que Wm pkq denota os valores dos
coeficientes do filtro em um instante de tempo k.
19
M
ÿ
ypkq “ Wm pkqxpk ´ mq (2.19)
m“0
A diferença ou erro epkq entre o valor de padrão desejado dpkq para a a resposta do filtro e a
informação da saída atual ypkq do modelo associado é expressa pela equação 2.20:
Basicamente para ajustar os valores dos coeficientes de um filtro adaptativo tipicamente utiliza
o método do gradiente para essa finalidade, sendo o critério da somatória do erro quadrático de
epkq frequentemente utilizado na etapa de adaptação (PINHEIRO, 2017).
Vale salientar, que alguns sistemas de comunicação de voz utilizam filtros adaptativos com
o objetivo de cancelar ou reduzir ecos ou barulhos do ambiente. Nesse contexto, foi pensado
inicialmente a utilização desse modelo de filtro para o projeto. No entanto, será explicado mais a
frente a não adoção desse modelo, bem como pela utilização de um filtro FIR típico.
Em termos práticos o comb filter ou “filtro pente” é uma versão atrasada do mesmo sinal, cau-
sando uma interferência construtiva ou destrutiva de dois sons tocados simultaneamente, porém
com atraso entre um para o outro.
Nesse sentido, há basicamente dois tipos de comb filters: o (feedback comb filter) e (feed-
forward comb filter). Resumidamente, os nomes referem-se à direção em que os sinais são atra-
sados antes de serem adicionados à entrada. O primeiro tipo considera em adicionar a saída do
filtro a entrada imediatamente posterior, enquanto o segundo considera apenas adicionar à saída
do filtro as entradas presente e a mesma entrada atrasada.
Como já informado, o caso do filtro pente com realimentação na saída, é um caso especial
de um Filtro de Resposta Infinita - seção 2.2.2, posto que pode ser observado uma figura de
atraso (delay) no sentido de realimentação no sistema. Este filtro pode ser um modelo físico
computacional de "séries de ecos", os quais decaem exponencialmente, bem como espaçados
uniformemente no tempo (SMITH, 2010).
Continuando a análise do modelo do referido filtro, ve-se que a estrutura geral de um sistema
de realimentação de um feedback comb filter pode ser mostrado através da figura 2.6(a). Além
disso pode ser descrito pela seguinte equação6 de diferenças 2.21:
20
(a) Feedback comb-filter
Y pzq 1 zK
Hpzq “ “ “ (2.23)
Xpzq 1 ´ αz ´K zK ´ α
Uma das formas de estimar a resposta de magnitude em função do valor do tempo de delay K
e fator de atenuação/ganho α é expressar Hpzq em termos de módulo |HpK, αq|, bem como, de
maneira conveniente, utilizando uma substituição z “ ejω .
1
|Hpejω q| “ , ´π ď ω ď π (2.24)
|1 ´ αe´jωK |
Nota-se pela expressão do ganho dada pela equação (2.24) que seu valor tem valores de res-
posta periódica indo de um valor mínimo e subindo para um valor máximo.
Supondo o valor de α “ 1 (0 dB), para simplificar os cálculos, a amplitude da resposta reduz-
se a:
1
Hpwq “ (2.25)
2|sinpωM {2q|
21
sinpωK{2q “ 0
K
ω “ pπ, p “ 0, 1, 2, ..., K ´ 1 (2.26)
2
p
wp “ 2π
K
Ou seja, em todos harmônicos pares do filtro.
Ademais, esses filtros são utilizados em toda sorte de efeitos de sons, principalmente no uni-
versos de instrumentos musicais. Vários desses filtros podem ser usados por exemplo para simular
uma reverberação (PARKS, 1987).
Por último, vamos falar do modelo proposto para o projeto deste trabalho, no qual consiste
de uma versão mais generalista do feedback comb-filter. Este modelo propõe a alocação de um
filtro casual Hl pzq na malha de realimentação, em vez de apenas um ganho de atenuação α. A
função de transferência 2.22 pode ser então reescrita como:
1
Hpzq “ (2.27)
1 ´ Hl pzqz ´K
NOTA
Para o critério de estabilidade do sistema, a amplitude de resposta do filtro Hl pzq
deverá ser menor que 1 em todas as frequências, i.e, |Hl pejωT q| ă 1, @ωT P
r´π, πq
Resumidamente, conforme pode ser observado na figura 2.7 este tipo de conversor utiliza
uma técnica de realimentação para relacionar uma voltagem analógica de entrada com um código
digital correspondente (conforme os N bits de resolução do conversor).
No início do processo de conversão o shift register e o holding register são zerados. Na
primeira etapa de conversão o MSB (bit mais significativo) do holding register é colocado em
nível alto (1 lógico) e os demais mantidos em nível baixo (0 lógico). É, então, realizada uma
comparação entre o resultado de saída do conversor D/A (VO ) e o sinal de entrada (VIN ). Se
VO ă VI N , o nível “1” é mantido para o MSB, caso contrário é substituído por “0”. A etapa
seguinte repete o mesmo processo para o 2-SB. Isso continua até que todos os N bits tenham
sido verificados. A decisão de manter o nível lógico “1” ou substituir por “0” é realizada pelo
comparador e pelo registrador de aproximação sucessiva. O controle lógico controla o início e o
fim de cada etapa de aproximação e o resultado destas etapas são retidas no holding register. O
22
sinal de saída é válido apenas quando todo o processo for concluído e isto é sinalizado pelo sinal
de status do controle lógico.
´ Intervalo de Tensão de Entrada: Se conectarmos uma guitarra que produz em seus cap-
tadores valores em ˘100mV nãó será possível conectar diretamente essa tensão num con-
versor de um microcontrolador que espera valores entre 1V a 3V . Neste caso é necessário
que o sinal da guitarra seja amplificado e modificado para que ele "ajuste-se"ao ADC.
´ Tensão de Referência: Um ADC não tem uma noção absoluta de tensão, em outras pa-
lavras, sua tarefa é comparar sua entrada com a tensão de referência e sua saída numa
proporção de 2. Assim, uma saída precisa recai na qualidade da referência e isso limita a
acurácia da informação.
´ Ruído e filtragem: Sinais no mundo real contém frequências indesejadas, no nosso caso,
uma guitarra ligada numa cadeira de pedais com fontes de alimentação cuja frequência da
rede elétrica gira torno de 50 ´ 60Hz. Nesse caso filtros são necessários para remover
esse ruído antes de iniciar a conversão ADC propriamente dita. Vale apontar que um filtro
passa-baixa também é necessário para evitar-se o efeito de dobramento espectral do sinal
(aliasing).
23
2.4 CONVERSÃO DIGITAL ANALÓGICA
1. A informação presente na linha de dados (SDA) somente é lida durante a fase alta da linha
de clock (SCL);
2. Somente é permitido alterar o nível da linha de dados (SDA) durante a fase baixa da linha
de clock (SCL).
´ R{W
Ď = 0: significa que o modo mestre escreverá dados no dispositivo em modo escravo.
O mestre é o transmissor e o escravo o receptor8 .
Normalmente o endereço de 7 bits é composto por duas partes: a primeira, de 4 bits, especifica
o tipo de dispositivo escravo a ser acessado, no nosso caso o endereço do dispositivo MCP 4725.
A segunda, de 3 bits, especifica um entre até oito dispositivos daquele tipo, o qual poderá ser
acessado.
7
Existem uma extensão de endereçamento utilizando 10 ´ bits mas são raras as redes de dispositivos I 2 C que
consigam esgotar a quantidade de endereços de 7 ´ bit, ou seja, raramente essa possibilidade é utilizada.
8
Em todos os casos o dispositivo master é responsável por toda a transmissão
24
2.5 FERRAMENTA COMPUTACIONAL
2.5.1 WinFilter
´ Butterwoth;
´ Chebyshev I;
´ Bessel;
´ Retagunlar; e
´ Cosseno Levantado.
Todos os filtros IIR são transformados do domínio S para o domínio Z com uma transforma-
ção bilinear9 e o método de correção de dobramento espectral (aliasing).
O WinFilter é composto por uma caixa de diálogo à esquerda, conforme visto na figura 2.8, e
a direita uma série de disposição dos gráficos de resposta do filtro correspondente.
Como pode ser observado, há também botões para que seja aumentado ou atenuado alguns
parâmetros do filtro, tais como taxa de amostragem, frequência de corte 1, frequência de corte 2,
ordem do filtro dentro outros. O botão "Calculate"pega os parâmetros selecionados e os mostram
através do do display de gráficos à direita do programa.
9
Bilinear Transform: https://en.wikipedia.org/wiki/Bilinear_transform
25
A reposta em frequência, fase e grupo de delay são calculados. Os zeros e polos são plotados
no plano Z. A resposta do filtro ao impulso unitário também é mostrada.
Uma importante ferramenta é que você pode avaliar nos gráficos a direita com o cursor do
mouse os valores do gráfico em determinado ponto espeficicamente, conforme visto na figura
2.9:
Figura 2.9: Valor lido no gráfico por meio do cursor do mouse. 4ms ´ 0.854
26
No menu Output - figura 2.10(a) - o programa permite que o código na linguagem C pode ser
gerados bem como os gráficos ora mostrados na região à direita do programa também possam ser
exportados em um Graphic Interchange Format - GIF. Além disso pode ser exportado o código
gerado via VHDL em dois modelos (figura 2.10(b)): Sized ou Speed Optimized (modo de velo-
cidade otimizada). Ambos os modos conseguem velocidades acima de 160 Mhz num dispositivo,
por exemplo, modelo Ep1c3t144 Ciclone (grade-4) FPGA
27
3 IMPLEMENTAÇÃO DO PROJETO
´ Velocidade nominal de até 200.000 amostras por segundo (200 Ksps), utilizando a técnica
de aproximação sucessivas (SAR);
28
Figura 3.2: Microcontrolador - modelo MSP430F5529LP
´ Operação de com diversas referências internas de tensões: 1.5V, 2.0V, ou 2.5V com con-
sumo típico de aproximadamente 250µA quando em operação;
´ 16 memórias de conversão com controle independente de cada uma, inclusive com a capa-
cidade de especificar o canal de entrada e referência;
(i) O processador usa dois níveis de tensões selecionáveis: VR` e VR´ a fim de determinar o
valor mínimo e máximo do conversor;
(ii) Uma saída digital (NADC ) recebe o nível máximo (4095 “ 0FFFh) quando o valor de entrada
for igual ou até mesmo maior que VR` . De modo semelhante o valor digital (NADC ) será
zero quando o valor de entrada for igual ou menor que VR´ .
Vin ´ VR´
NADC “ 4095. Vin : Tensão de entrada. (3.1)
VR` ´ VR´
(iv) Em especial, o módulo ADC12_A é configurado por dois registros de controle: o ADC12CTL0
e ADC12CTL1.
(vi) Após isso, seleciona-se o endereço inicial da memória de conversão, pelos bits CSTAR-
TADDx (registrador ADC12CTL1);
29
3.1.2 Requisitos de Hardware para a Tempo de Amostragem
3.1.2.1 Contextualização
30
3.1.2.2 Tempo de Amostragem do ADC12 do µC MSP430
Figura 3.4: Circuito analógico de entrada equivalente - Fonte: User’s Guide MSP430F5529 pag. 737
Temos no caso, para uma quantização dos valores de tensão de entrada valores que podemos
mensura-los em bits mais significativos - MSB e menos significativos - LSB. Considerando o caso
mais simples onde a tensão de entrada estaria entre um bit 0 e 1 de uma quantização com apenas
n bytes (2n LSB‘s) obtemos:
ˆ ˙
Vf ´t{RC Vf t
“e ñ ln “´
Vi Vi RC
ˆ 1 ˙ (3.3)
LSB t
ln 2n “´ ñ t “ RC. lnp2n`1 q
2 LSB RC
Por conseguinte, com SHP = 1 temos o modo de amostragem temporizada. O tempo de amos-
tragem será determinado por um timer interno, que é configurado de acordo com os bits SHT1x e
1
SHS_1 por exemplo é proveniente da interrupção de um evento de comparação em um dos canais do timer A
(saída TA1).
31
SHT0x (registrador ADC12CTL0). Os bits SHT1x determinam o tempo de amostragem (em ci-
clos de clock do conversor) para as memórias ADC12MEM8 até ADC12MEM15, tal como os bits
SHT0x determinam o tempo de amostragem para as memórias ADC12MEM0 até ADC12MEM7.
Ora, calculado o tempo de amostragem do conversor ADC12, temos agora, conforme visto no
user’s guide, contar ainda 13 (treze) batidas de clock do conversor AD, ou seja, deve-se esperar
um total de:
Esse período descrito na equação 3.4 precisa ser consideravelmente menor que o período
da taxa de amostragem do sinal e, que será sincronizado com a interrupção do TIMERA que,
1
conforme já estipulamos, é igual a T A “ 22050Hz “ 45, 35µs.
De fato, considerando que a resistência da guitarra (fonte de aúdio de entrada) RS “ 1kΩ o
valor da taxa de amostragem do conversor ADC12 é igual a:
tADC12CLK “ 5M hz “ 0.2µs
4µs (3.5)
N“ “ 20
0.2µs
Como temos apenas potência de 2 na escolha deste registrador, devemos escolher o número
imediatamente superior, no caso N “ 32.
32
3.2 BLOCO 1 - FILTRO FIR
Para o código que foi elaborado com o objetivo de análise do efeito shimmer e suas limitações
em termos da discretização do sinal no domínio do tempo na perspectiva de síntese e análise do
sinal.
Nesse caso, o filtro escolhido foi um filtro FIR-passa baixa cuja frequência de corte do projeto
foi no valor de 2kHz. Tendo esse filtro utilizado a quantidade de 51 Taps (tamanho da janela), cujo
janelamento foi feito com a janela Blackman (equação 3.6), cujos benefícios já foram explicados
na seção 2.1.2.
Após a multiplicação basta agora efetuar a operação de convolução com o sinal original de 12
bits resultando num sinal de 12 bits filtrado em 2kHz.
Com respeito ao projeto do microcontrolador, sabe-se que há uma limitação do próprio hard-
ware em trabalhar com valores em ponto flutuante. Nesse sentido a utilização do software WinFil-
ter foi de suma importância pois ele fornece um vetor, em ponto fixo - 8 ou 16 bits, de coeficientes
do filtro FIR correpondente de acordo com os parâmetros do projeto, algo extremamente prático.
Além disso ele fornece uma pequena função que já calcula a convolução das amostras do
filtro, no entanto a implementação, especificamente na linha 2 e 3 do código 3.1, é ineficiente
devido que para cada nova amostra que chega do sinal, ele desloca todas as amostras para então
realocar espaço para amostra que chega:
33
7 for(n=0; n<Ntap; n++)
8 y += FIRCoef[n] * x[n];
9 return y / DCgain;
O objetivo bloco é alterar a frequência do sinal sem alterar sua duração. Uma forma que
aparentemente funcionaria é que: se gravarmos um som e então faz-lo tocar duas vezes mais
rápido, então a frequência desse sinal seria dobrada e então deslocada a frente 1 oitava. Isso está
correto, no entanto o sinal é duas vezes também mais curto - figura 3.6.
A maneira de fazer isso corretamente é pegar o som gravado, dobra-lo de tamanho sem afetar
sua frequência natural e então toca-lo duas vezes mais rápido, logo todas as frequências dobrariam
de valor e então, seriam devidamente deslocadas, bem como a duração do sinal nesse caso estaria
mantida conforme o som original - figura 3.7. O algoritmo do MATLAB® , nesse caso se baseia
nesse princípio. O que será explicado a seguir.
34
Figura 3.6: Exemplo de arbodagem do pitch-shifter - Implementação equivocada do efeito pitch-shift.
Visão Geral
Na seção 1.1.4 foi demonstrado o conceito fator de escala como um fator usado para expandir
ou comprimir o espectro para ajustar as frequências/alturas do sinal de modo que esse desloca-
mento seja corretamente ajustado. Uma vez feito isso, nós poderemos reconstruir o sinal e voltar
a sua duração inicial com o efeito pitch-shifting realizado.
35
De fato, se queremos deslocar o sinal um semitom, será preciso utilizar um fator de escala
igual a 21{12 o qual corresponde a 1.0594 - figura 3.8. Isto é, precisamos "esticar"o sinal sem alte-
rar seu espectro de frequência, todavia, a duração do sinal é agora multiplicado por 1.0594. Uma
vez feito isso, somente será preciso tocar o sinal 1.0594 vezes mais rápido (DEMERS FRAN-
COIS GRONDIN, 2009).
Figura 3.8: Técnica realizada para o deslocamento de frequência num fato de 1.0594
Uma das etapas de implementação do algoritmo é a separação do sinal original em uma grande
quantidade de frames (pedaços). Esses frames - figura 3.9, são obtidos do sinal original, "sobre-
postos"uns com os outros por um fator de x% de sobreposição2 . Esses frames estarão então
convenientemente espaçados e sobrepostos, no processamento, dependendo se o sinal original
será esticado ou comprimido no tempo.
No entanto, os espaços entre os frames são realizados em determinados trechos do sinal inad-
vertidamente. Nesse caso, são criados descontinuidades nos frames subsequentes do sinal. Isto é,
a figura 3.10 mostra que o sinal original possui um tamanho x entre os frames e este espaço agora
tem valor y devido compressão ou expansão do sinal.
Esse procedimento produz "defeitos"no som (espaços indesejados) que são perceptíveis ao
ouvido humano. Desse modo é preciso de alguma forma fazer essa descontinuidade desaparecer.
Por conta disso precisamos de uma técnica de processamento denominada de phase vocoder.
2
Dependendo se os deslocamentos são em números inteiros ou fracionários correspondente aos intervalos (seg-
mentos) de frequência - bins podemos ter algo em torno de 50% de sobreposição para saltos em números inteiros,
enquanto para saltos fracionários algo em torno de, no mínimo, 75% (LAROCHE, 1999).
36
Figura 3.9: Expansão e compressão do sinal frame por frame.
Figura 3.10: Sinal tornando-se descontínuo quando submetido ao processo de expansão ou compressão no
tempo.
Phase Vocoder
O phase vocoder é uma variação da Transformada Rápida de Fourier (FFT) que usa informa-
ções de fase para melhorar as estimativas de frequência (SETHARES, 1999). É ideal para uso
37
em aplicações como o alongamento ou a compressão de tempo de áudio, embora existam vários
outros efeitos especiais que podem ser implementados usando a estratégia de phase vocoder.
Além disso, o phase vocoder é apresentado como uma solução de alta qualidade para a modi-
ficação da escala de tempo (ou frequências), o pitch-shift é implementado como uma combinação
de escala de tempo e conversão da taxa de amostragem (LAROCHE, 1999).
A figura 3.12 mostra como um algoritmo phase vocoder funciona tanto de maneira geral,
como com a implementação do algoritmo escrito em MATLAB® - figura 3.12. Ele basicamente
consiste em 3 (três) estágios: análise, processamento e síntese (PORTNOFF, 1976).
Análise: Como já mencionado nesse trabalho na seção 2.1.2 que um janelamento refere-se
a falar de um pequeno frame de um sinal infinitamente maior (se considerarmos apenas 1 pequena
janela comparado a todo o sinal amostrado). O processamento dessa janela no espectro do sinal
pode ser minimizada. Em outras palavras, para reduzir o efeito de janelamento do sinal na sua
representação no domínio da frequência, é utilizado uma janela do tipo Hanning ou Blackman
de tamanho N . De acordo com a figura 3.13, uma multiplicação de uma janela retangular no
domínio do tempo com o sinal é equivalente a uma convolução de no domínio da frequência.
Já foi mencionado que modo a janela retangular possui mais energia nos lóbulos laterais em
38
Figura 3.12: Ilustração Específica das Etapas do algoritmo do phase-vocoder
comparação aos demais janelamentos, enquanto a janela Hanning ou Blackman tem um foco de
concentração de sua energia espectral no seu lóbulo principal, ou seja, perto do nível DC do sinal
- seção 2.1.2.
Esse frame é, formado por N amostras, é então transformado através de uma Transformada
Rápida de Fourier - Fast Fourier Transform (FFT) conforme a equação 3.8
39
N
ÿ ´1
2πkn
pXa rksqi “ xrn ` i.phopa qswrnse´jp N
q
k “ 0, 1, 2, ..., N1 (3.8)
n“0
A informação de fase dos dois frames sucessivos é relevante. Pois o primeiro sinal, não há
diferença de fases entre os dois frames. Por outro lado, para o segundo sinal, a fase do primeiro
segmento é maior que zero. Isso implica que a componente do sinal que correspondente para este
segmento é maior que na frequência desse segmento, pois a energia da componente de frequência
ora pertencente ao próximo frame i está ainda contida no frame i ´ 1. A diferença de fase entre
dois frames é referenciado no código como phase-shift p∆φa rksqi no intervalo de ´π a π. Sem a
sobreposição, a frequência real pωtrue rksqi pode ser obtida de um deslocamento de fase p∆φa rksqi
40
e um intervalo de tempo ∆ta entre dois frames conforme visto na equação 3.9. O intervalo de
tempo ∆ta é o número de saltos hopa dividido pela frequência de amostragem fs .
p∆φa rksqi
pωtrue rksqi “ (3.9)
∆ta
A equação supracitada é menos complexa pois trata-se de um sinal não sobreposto. No caso
mais complexo, o desvio de frequência para o primeiro segmento é calculado e então sobreposto.
Essa quantidade é adicionada ao segmento de frequência para obter a real frequência daquele
componente dentro do frame. As equações 3.10, 3.11 e 3.12 ilustram esse procedimento. A va-
riável pφa rksqi´1 e pφa rksqi correspondem a fase do frame anterior e o frame presente respectiva-
mente. Também, ωbin rks corresponde a frequência do segmento, p∆ωrksqi o desvio de frequência
e p∆ωwrapped rksqi corresponde o desvio de frequência sobreposta (wrap-frequency).
A nova fase de cada fragmento pode ser então calculada adicionando a fase deslocada reque-
rida para assim evitar-se a descontinuidade dos segmentos. Isso é feito multiplicando a frequência
real com o intervalo de tempo do estágio de síntese, conforme mostrado na equação 3.13:
A fase do frame anterior, por síntese, já é conhecida desde que ela á foi calculada pelo algo-
ritmo de recursividade. Por fim, o novo espectro é então obtido conforme a equação 3.14:
41
˜ ¸
N ´1
1 ÿ 2πkn
qi rns “ pXs rksqi e´j N wrns n “ 0, 1, 2, ..., N ´ 1 (3.15)
N k“0
Cada frame é estão sobreposto conforme mostra a equação 3.16. A variável L corresponde ao
número de frames e urns representa a função degrau unitário.
L´1
ÿ
yrns “ qi rn ´ i.hops sturn ´ i.hops s ´ urn ´ i.hops ´ Lsu (3.16)
i“0
Agora que temos o nosso sinal sem descontinuidades podemos agora estica-lo ou comprimi-lo
no tempo e suas componentes de frequências não serão alteradas. Agora, podemos re-amostrar o
sinal e volta-lo para a duração inicial e então deslocar a sua frequência. Supondo que dado uma
taxa de amostragem queremos dobrar a frequência - 1 pitch de 1 oitava. A maneira mais fácil de
fazer é escolher apenas uma amostra de duas e produzir o resultado. Isso é fácil, porque quando
dobramos a frequência, lidamos com um fator de escala que é um número inteiro. Para fatores
de escala não inteiros (1 semitom por exemplo - 1.0594) é usado uma interpolação linear para
aproximar a amostra que deveria estar naquele local.
Figura 3.15: Reamostragem do Sinal utilizando duas vezes o valor da amostra anterior
42
3.3.1.4 Peformance
Após a fase de análise de dados, bem como o processamento do sinal através da aplicação da
FFT nas amostras, vem a fase de síntese que consiste em transformar o banco de frames para o
domínio do tempo com a Transformada Inversa de F ourier.
A onda sonora emitida pelo instrumento se espalha no ambiente. primeiro, chega diretamente
ao ouvinte, mas segue seu caminho, para várias direções, e atinge superfícies e refletem-se para
outras direções. Conforme mencionado na seção 1.1.2, num curto espaço de tempo, o campo
sonoro dentro da sala estará um verdadeiro caos. Milhares de ondas sonoras, de diferentes inten-
sidades e fases, seguem o som original da fonte sonora, criando o que chamamos de reverberação.
O fato é que o som final (resultante do som direto, das reflexões primárias, fortes e espaçadas
e do campo reverberante que soa como uma cauda), depende totalmente da posição da fonte
sonora, da posição do ouvinte (ou do microfone), da geometria da sala, de seu tamanho e dos
revestimentos existentes. Cada sala tem o seu próprio tipo de reverb. Para efeitos deste texto
(mesmo porque cada literatura trata o assunto de uma maneira diferente), chamaremos de Reverb
todo o som que segue o original. Portanto, o conjunto de reflexões primárias e tardias, que
dependem das características acústicas da sala.
Em outras palavras, podemos dizer que toda e qualquer sala possui uma “impressão digital”,
única, característica, que determina como o som se comportará dentro dela. Algumas impressões
digitais são bem conhecidas, sendo que a grande maioria das pessoas identifique facilmente se
um som foi gravado ou está sendo gerado dentro de um ginásio de esportes, ou de uma catedral,
cavernas, banheiros, salas de concerto, etc (REISS, 2014).
A grande vantagem nesse caso de usar o reverb de convolução é justamente utilizar uma
forma de resposta impulsional daquele ambiente e depois "filtrar"(convoluir) o sinal original com
essa resposta, muito semelhante ao que é feito com o filtro de resposta finita, conforme visto na
43
equação 3.18.
Dado um sinal de entrada s, o sinal filtrado de saída r será a convolução de s pela resposta ao
impulso de hr0s, hr1s, ...., hrn ´ 1s, onde h é o modelo característico do ambiente sonoro.
N
ÿ ´1
rrns “ ps ˚ hqrns “ srn ´ kshrks (3.18)
k“0
Embora a convolução seja uma técnica matemática bastante útil, ela é demasiadamente pe-
sada em termos computacionais. Para uma simulação real de um ambiente natural, é necessário
uma resposta ao impulso, no mínimo, de 2 segundos segundo (REISS, 2014). Perceba que para
o processamento de uma amostra do sinal com um reverb de convolução, as operações de multi-
plicação e acumulação deve ser avaliadas para todo o tamanho da resposta ao impulso. Tomando
nota de um pequeno exemplo: se assumimos um sinal a 44.1kHz de taxa de amostragem e que a
resposta ao impulso tenha apenas 1 segundo de duração, teremos mais ou menos 2 ˚ 109 adições
e multiplicações sendo requeridas por segundo. Não obstante, mesmo dentro dessa realidade há
algumas técnicas3 que podem reduzir essa quantidade demasiadamente grande de operações, as
quais, infelizmente, não serão aplicadas neste trabalho.
44
Figura 3.16: MCP4725 Especificações
´ Resolução: 12 bits;
´ Interface: I2 C;
45
a transmissão pode ser automaticamente finalizada por uma condição de parada.
Assim, os passos para realizar uma transmissão utilizando o modo mestre com contagem
automática:
7. Após a transmissão de cada byte, o transmissor mantém a linha SDA livre no nono ciclo
de clock, de forma que o receptor possa reconhecer a informação (mantendo-a em nível
"O", gerando o sinal ACK). Caso o receptor reconheça a transmissão (ACK = O), o trans-
missor dá prosseguimento a ela. Caso o receptor não reconheça a transmissão por algum
motivo (ACK = 1), o transmissor aborta a transmissão e seta o flag de não-reconhecimento
(I2CIFG:NACKIFG).
8. Encerrada a transmissão (com uma condição de parada), os flags 12CSTP, 12CMST, 12CBB
e 12CBUSY são automaticamente apagados.
46
4 SIMULAÇÕES E RESULTADOS
5. Análise espectral do sinal de áudio de 12 bits do áudio com deslocamento de 1 oitava pitch-
shifter e o efeito shimmer.
47
caso, posto que o conversor em questão seja de 12 (doze) bits percebe-se que não há uma perda
significativa na resolução do sinal, bem como audivelmente não se percebeu grande perda de
qualidade em relação ao áudio original em 16 bits.
Essa resposta do filtro passa baixa (figura ??) com frequência de corte igual a 2kHz. Esse
filtro foi utilizado o número de 51 Taps. Nota-se que a atenuação começa a partir da frequência
48
Figura 4.1: Resposta do filtro FIR-Passa-Baixa com janela Blackman
sec
frrad{sampless “ frcycles{secs ¨ samples rad
¨ cycle ñ frrad{sampless “ frcycles{secs ¨ 2π
fs
ñ f “ 44100 ˚ 0.2{2π “
1403.74Hz.
A seguir temos nas figuras 4.2(a) e 4.2(b) os áudios para serem utilizados no processo de
convolução com o sinal original, originando o efeito de reverb em convolução.
Resultado da resposta em frequência (figura 4.3) da aplicação do filtro FIR-passa-baixa no
sinal original de 12 bits:
Agora segue os resultados aplicando o algoritmo do pitch-shifter no sinal filtrado de 12 bits.
Finalmente o espectro dos sinais: original 12 bits, do pitch-shifter e do aúdio com o efeito
shimmer.
49
(a) Espectro de frequência de uma resposta impulsional de um som oriundo do
Palácio de Falkland Palace in Fife.
de amostragem das frequências que foram deslocadas do sinal. Isso é facilmente explicado e já
mencionado no parágrafo 3.3.1.2 da seção que fala sobre phase-vocoder, que diz que a energia
das frequências ora existentes entre dois segmentos de frequências (bins) consecutivos, terá seu
valor distribuído entre esses dois segmentos.
50
Figura 4.3: Espectro de frequência do sinal original 12 bits e o sinal filtrado pelo filtro casual FIR.
Foi também testado diferentes valores de espaçamentos entre os frames com fatores menores
de 75% de preenchimento, os quais apresentaram muito ruins em termos de qualidade no som.
Em outra linha, e para o exemplo ora apresentado neste trabalho, foi considerado um overlap
muito menor do que 25%, bem como um janelamento bem maior que 1024 amostras.
Bem, o módulo MCP4725 foi testado de diferentes maneiras. A primeira e mais simples foi
aplicar um sinal constante DC o qual era lido pelo conversor DAC e enviado a um multímetro.
Foram colocados os valores de 0´p0V q, 2048´p2.5V q e 4095´p5V q. Outro teste mais elaborado
foi avaliar a saída do MCP4725 submetido a um trem de valores lineares que variassem de 0 até
4095. Como vocês podem notar o conversor DAC obteve valores muito satisfatórios.
51
(a) Análise espectral de um áudio de guitarra tocando um acorde dedilhado. Pitch-shifter utilizando deslocamento
de 1 oitava.
(b) Espectro de frequência do sinal original 12 bits, do pitch-shifter com deslocamento de 1 oitava, e o efeito
shimmer.
52
Figura 4.4: Análise espectral de um sinal puro de guitarra tocada na nota Lá - A2 = 220Hz e o efeito
pitch-shifter utilizado deslocamento de 1 oitava.
53
(a) Valor da amostra igual 0.
Figura 4.5: Teste de valores DC através de software e transmitidos através da interface I2 C do MSP430 e
lida por meio de um multímetro nos terminais do DAC MCP4725.
54
Figura 4.6: Teste com um vetor de valores lineares avaliados entre 0 até 4095.
55
5 CONCLUSÕES
Neste presente trabalho foi proposta a implementação, em software, do efeito ressonante se-
letivo em frequência denominado Reverb-Shimmer, bem como a análise de desempenho da con-
versão AD e DA no microcontrolador MSP430F5529 da Texas InstrumentsT M . Os resultados
oriundos da amostra de áudio sem o efeito utilizando o código em MATLAB® mostraram-se qua-
litativamente satisfatórios. No outro viés, foram feitas implementações da performance do micro-
controlador nas etapas de conversão Analógica Digital e Digital Analógica, em face da realidade
de embarcamento do código ora implementado no software MATLAB® .
56
5.2 LIMITAÇÕES DO TRABALHO
Considerando a seção 5.1, vale destacar, por ora, que a realização em hardware foi a maior
dificuldade encontrada dentro do projeto por conta das escolhas dos parâmetros limitantes, tais
como:
Diante disso foi necessário concluir o trabalho apenas entendendo as limitações de hardware
dos conversores Analógico Digital e Digital Analógico baseado em amostras convenientemente
escolhidas, como um sinal DC ou um trem linear de dados. Por outro lado, não se avaliou o
desempenho com os códigos ora projetados no MATLAB® para o microcontrolador em questão,
devido ao tempo dispendido no projeto.
Como sugestões para continuação tanto do estudo do efeito ressonante e seletivo em frequên-
cia reverb-shimmer bem como sua implementação em um microcontrolador ou DSP, podemos
elencar os pontos que podem ser abordados:
Estudo de utilização de outro modelo de implementação de reverb na cadeia de realimenta-
ção do modelo do comb-filter, tais como o Schroeder’s Reverberator ou Moorer’s Reverberator
(REISS, 2014) que possuem mais opções de ajustes do efeito do que o reverb de Convolução.
No caso desse presente trabalho a principal sugestão é no quesito da implementação do efeito
reverb-shimmer num microcontrolador para que seja avaliado seu desempenho em tempo de exe-
cução. Outro detalhe é realizar os testes em linguagem C com o código que implementa o efeito
seletivo em frequência pitch-shifter e seu desempenho em sistemas embarcados.
Além do itens anteriores e não menos importante, é a elaboração de uma robusta documenta-
ção para disponibilização do código para qualquer projeto de sistemas microprocessados princi-
palmente aplicados aos mais populares DSP do mercado.
57
REFERÊNCIAS BIBLIOGRÁFICAS
ABEL, J. S.; BERNERS. Spring reverb emulation using dispersive allpass filters in a waveguide
structure. In: Audio Engineering Society Convention 121. [s.n.], 2006. Disponível em:
<http://www.aes.org/e-lib/browse.cfm?elib=13788>.
KUNDERT, A. WinFilter: The easiest way to design a Digital Filter. 2004. Disponível em:
<http://http://www.winfilter.20m.com/>.
LATHI, B. P. Modern Digital and Analog Communication Systems. [S.l.]: Oxford University
Press, 1995. ISBN 0030284074.
LYNN, P. A.; FUERST, W. Introductory Digital Signal Processing with Computer Applications
with 3.5 Disk. 2nd. ed. New York, NY, USA: John Wiley & Sons, Inc., 1998. ISBN 0471976318.
PARKS, C. S. S. B. T. W. Digital filter design. [S.l.]: Wiley-Interscience New York, 1987. ISBN
0471828963.
58
PORTNOFF, M. R. Implementation of the digital phase vocoder using the fast fourier transform.
IEEE TRANSACTIONS ON ACUSTICS, SPEECH, AND SIGNAL PROCESSING, 1976.
REISS, A. P. M. J. D. Audio Effects: Theory, Implementation and Application. [S.l.]: CRC Press,
2014.
SMITH, J. O. Physical Audio Signal Processing for Virtual Musical Instruments and Digital
Audio Effects. [S.l.]: W3K Publishing, 2010. ISBN 0974560723.
59
APÊNDICES
60
I.1 CÓDIGOS EM MATLAB RELACIONADOS AO TRABALHO PRO-
POSTO
Código MATLAB responsável pela realização do efeito shimmer numa amostra de Áudio
Listing 1: Code: "audio.m":Código Matlab para a realização da análise espectral do efeito shimmer em
um sinal de áudio de 12bits/44100Hz
1 clc;
2 clear all;
3 info = audioinfo('guitar.wav')
4 [y,Fs] = audioread('guitar.wav','native');
5 voiceL = y(1:1000000,1);
6 %voiceR = y(:,2);
7
8 for j = 1:15
9 voiceL = [voiceL, bitshift(voiceL(:,j),-1)]; % shift once to ...
the right
10 % voiceR = [voiceR, bitshift(voiceR(:,j),-1)];
11 end
12
23 audiowrite('guitar12bits.wav',output12bits,info.SampleRate);
24 audiowrite('guitar10bits.wav',output10bits,info.SampleRate);
25 audiowrite('guitar8bits.wav',output8bits,info.SampleRate);
26 audiowrite('guitar4bits.wav',output4bits,info.SampleRate);
27
28 info = audioinfo('guitar12bits.wav')
29 info = audioinfo('guitar10bits.wav')
30 info = audioinfo('guitar8bits.wav')
31 info = audioinfo('guitar4bits.wav')
32
33
61
37 t = linspace(0,1/info.SampleRate,length(voice));
38 plot(t,voice(:,1));%16 bits
39 %plot(t,output12bits);%12 bits
40 %plot(t,output10bits);%10 bits
41 plot(t,output8bits);%8 bits
42 %plot(t,output4bits);%4 bits
43 legend('sinal 16 bits','sinal 8 bits');
44 hold off;
45
46
64 %projetar o filtro
65 [b,a] = butter(8,0.1,'low');
66 H = freqz(b,a,floor(num_bits/2));
67 hold on
68 figure()
69 plot([0:1/(num_bits/2 -1):1], abs(H),'r');
70 hold off
71 figure()
72 output12bits_filtrado = filter(b,a,output12bits);
73 plot(output12bits,'b')
74 hold on
75 plot(output12bits_filtrado,'r')
76 %normalizando
77 output12bits_filtrado = ...
output12bits_filtrado/max(abs(output12bits_filtrado));
78 legend('audio 12 bits','audio 12bits filtrado');
79 audiowrite('guitar12bitsfiltrado.wav',output12bits_filtrado,info.SampleRate);
80
81 hold off
82 %oitavador
62
83 guitar_oitavado = pitchShift(output12bits,1024,256,2);
84 guitar_oitavado_filter = filter(b,a,guitar_oitavado);
85
86 %pequeno delay
87 leftout=output12bits; % set up a new array, same size as old one
88
91 for n=N+1:length(guitar_oitavado_filter)
92
125 audiowrite('shimmerA.wav',leftout,44100)
63
1 #include <msp430.h>
2 #include <stdint.h>
3 #include "mcp4725.h"
4 #include "lib/lcd/lcd.h"
5 #include "lib/dma/dma.h"
6 #include "lib/port/port.h"
7 #include "lib/clock/clock.h"
8 #include "lib/adc12/adc12.h"
9 #include "lib/timers/timer.h"
10 #include "lib/serial/serial.h"
11
18 uint16_t adcResult;
19 uint16_t data = 0, write;
20
21 int main(void) {
22 watchDogStop();
23 portInit();
24
25 lcdInit();
26 lcdClear();
27
28 clockInit();
29 clockSetDCO(1000000);
30 clockSelect(DCO, SMCLK);
31 clockSelect(DCO, MCLK);
32
33 adc12Init();
34 portRoute2Perif(P6,0);
35
36 //timerSetup(B0,ACLK,UP,3276,1000);
37 TB0CTL = TBSSEL__ACLK | // Select ACLK as ...
clock source
38 MC__UP | // Setup but do not count
39 TBCLR; // Clear timer
40
46 dmaEnable(0);
64
47 dmaTrgr(0,DMA_ADC12IFGx);
48 dmaAddr(0,&ADC12MEM0,DMA_FIXED,&adcResult,DMA_FIXED);
49 dmaMode(0,DMA_RPT_SINGLE_TRANSFER);
50 dmaSize(0,1);
51
52 serialInit(I2C);
53
54 __enable_interrupt();
55
56 //mcpWrite(0x2FF);
57
61 while(index) {
62 while(!write);
63 recData[--index] = adcResult;
64 mcpWrite(index);
65 write = 0;
66 }
67 while(1);
68 }
69
77 #pragma vector=TIMER0_B0_VECTOR
78 __interrupt void isr_tb0_ccr0 () {
79 write = 1;
80 adcDisable();
81 adcEnable();
82 }
Código Auxiliar responsável pelo Efeito Shimmer. Há duas funções aninhadas necessá-
rias que serão inseridas no final do código.
65
5 %% Parameters
6
7 % Window size
8 winSize = windowSize;
9 % Space between windows
10 hop = hopSize;
11 % Pitch scaling factor
12 alpha = 2^(step/12);
13
14 % Intermediate constants
15 hopOut = round(alpha*hop);
16
21 %% Source file
22
23 x = inputVector;
24
25 % Rotate if needed
26 if size(x,1) < size(x,2)
27
28 x = transpose(x);
29
30 end
31
32 x = [zeros(hop*3,1) ; x];
33
34 %% Initialization
35
49 for index=1:numberFramesInput
50
51 %% Analysis
66
52
68 %% Processing
69
72 previousPhase = phaseFrame;
73
76
79
86 % Remove the 60 Hz noise. This is not done for now but could be
87 % achieved by setting some bins to zero.
88
89 %% Synthesis
90
67
98 outputy(index,:) = outputFrame .* wn' / ...
sqrt(((winSize/hopOut)/2));
99
100 end
101
102 %% Finalize
103
115 return
116
136 end
137
138 return
139
140
68
143 sizeMatrix = size(framesMatrix);
144
154 timeIndex = 1;
155
159 vectorTime(timeIndex:timeIndex+sizeFrames-1) =
160 vectorTime(timeIndex:timeIndex+sizeFrames-1) + ...
framesMatrix(index,:)';
161
164 end
165
166 return
69