SISTEMA DE RECONHECIMENTO SONORO … 8 – Noção temporal na Tablatura.....34 Figura 9 –...
Transcript of SISTEMA DE RECONHECIMENTO SONORO … 8 – Noção temporal na Tablatura.....34 Figura 9 –...
CENTRO UNIVERSITÁRIO POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
ENGENHARIA DA COMPUTAÇÃO
SISTEMA DE RECONHECIMENTO SONORO PARA
INSTRUMENTOS DE CORDA
Nathanael Mota de Vicente
Monografia apresentada à disciplina de Projeto Final como requisito parcial à conclusão
do Curso de Engenharia da Computação, orientada pelo Prof. Alessandro Zimmer
UNICENP/NCET
Curitiba
2007
12
TERMO DE APROVAÇÃO
Nathanael Mota de Vicente
Sistema de reconhecimento sonoro para instrumentos de corda Monografia aprovada como requisito parcial à conclusão do curso de Engenharia da Computação
do Centro Universitário Positivo, pela seguinte banca examinadora:
Prof. Alessandro Zimmer (Orientador) Prof. José Carlos da Cunha Prof. Maurício Perretto
Curitiba, 10 de Dezembro de 2007
13
Dedico este projeto a minha mãe Dimenes e também a Deus para que a cada dia Ele
possa utilizar os meus conhecimentos para o bem da humanidade.
14
AGRADECIMENTOS
Pelo desenvolvimento de projeto e conhecimento adquirido agradeço ao meu professor e
orientador Alessandro Zimmer. Nos momentos de dificuldade técnica e teórica ele soube de
forma precisa orientar-me para que o projeto caminha-se em uma direção concisa. Agradeço
também ao professor Maurício Perretto pela orientação em relação ao hardware do projeto e por
fazer-me acreditar que era possível realizar um sistema de reconhecimento de notas musicais.
Agradeço também ao professor José Carlos da Cunha que sobe realizar uma avaliação precisa do
projeto em momento de banca.
Agradeço também por todo apoio e paciência da minha mulher Natália que me apoiou
emocionalmente e psicologicamente para a realização do projeto. Por fim agradeço aos meus
familiares e principalmente ao meu pai Olívio que me apoiou nos momentos mais difíceis deste
curso tanto financeiramente quanto emocionalmente.
15
RESUMO
O projeto se constitui de um circuito dedicado à captação do sinal gerado por um
instrumento musical (guitarra). Após a discretização, o sinal é processado e inserido em uma
rede neural. Após o reconhecimento, a representação das notas é feita graficamente, em forma de
tablatura, que é uma simbologia numérica de representação de notas e técnicas musicais. O tema
proposto auxilia músicos na composição e representação musical.
Palavras-Chave:
Guitarra, Discretização, Rede Neural, Tablatura.
16
SYSTEM OF SONOROUS RECOGNITION FOR ROPE INSTRUMENTS
ABSTRACT
The project consists of a circuit dedicated to capture the signal generated by a musical
instrument (Guitar). After the acquisition the signal is processed and inserted into a neural
network. After the recognition process the note representation is done graphically through
musical representation in the shape of tablature which is a numerical representation of notes and
musical techniques. The theme helps musicians in musical composition and representation.
Keywords:
Guitar, Acquisition, Neural network, Tablature
17
LISTA DE FIGURAS
Figura 1 – Exemplo de harmônicas ...........................................................................................24 Figura 2 – Onda dente-de-serra .................................................................................................25 Figura 3 – Onda triangular ........................................................................................................25 Figura 4 – Onda quadrada .........................................................................................................26 Figura 5 – Envolvente aplicado a uma onda ..............................................................................27 Figura 6 – Tablatura vazia.........................................................................................................33 Figura 7 – Exemplo de tablatura ...............................................................................................34 Figura 8 – Noção temporal na Tablatura ...................................................................................34 Figura 9 – Técnica Solo ............................................................................................................35 Figura 10 – Técnica Slide .........................................................................................................35 Figura 11 – Técnica Bend .........................................................................................................35 Figura 12 – Técnica Vibrato......................................................................................................36 Figura 13 – Técnica Vibrato......................................................................................................36 Figura 14 – Técnica Pull Off.....................................................................................................36 Figura 15 – Técnica Tapping ....................................................................................................37 Figura 16 – Técnica Harmonics ................................................................................................37 Figura 17 – Diagrama do sistema..............................................................................................38 Figura 18 – Circuito Geral Compressor.....................................................................................39 Figura 19 – Microcontrolador PIC16F977.................................................................................41 Figura 20 – Circuito da Aquisição do Sinal ...............................................................................42 Figura 21 – Ausência de sinal musical ......................................................................................45 Figura 22 – Sinais musicais reais ..............................................................................................46 Figura 23 – FFT original...........................................................................................................47 Figura 24 – Desvio padrão na FFT original ...............................................................................47 Figura 25 – Função do Perceptron e Função de Retropropagação..............................................48 Figura 26 – Uma rede multicamada...........................................................................................50 Figura 27 – Fluxograma de Treinamento...................................................................................53 Figura 28 – Fluxograma de Reconhecimento ............................................................................54 Figura 29 – Rede Neural ...........................................................................................................55 Figura 30 – Diagrama de classe ................................................................................................56 Figura 31 – Interface.................................................................................................................57 Figura 32 – Janela de treinamento.............................................................................................60 Figura 33 – Erros x Épocas .......................................................................................................62
LISTA DE TABELAS
Tabela 1 – Formas de onda simples e seus timbres....................................................................23 Tabela 2 – Harmônicos .............................................................................................................24 Tabela 3 – Exemplos de séries harmônicas................................................................................28 Tabela 4 – Saída desejada .........................................................................................................52 Tabela 5 – Tabela de Parâmetros da Serial ................................................................................55 Tabela 6 – Cronograma.............................................................................................................58 Tabela 7 – Valores do estudo de viabilidade .............................................................................59 Tabela 8 – Época por Nota........................................................................................................61
18
LISTA DE SIGLAS
ADC
ADSR
ASCII
CAG
DAC
DSP
FFT
MIDI
MS-DOS
-
-
-
-
-
-
-
-
-
Conversor Analógico para Digital
Ataque, Decai mento, Sustentação e Relaxamento
Código de padrão americano para o intercâmbio de informação
Controle Automático de Ganho
Conversor Digital para analógico
Processador Digital de Sinais
Transformada Rápida de Fourier
Interface Digital para Instrumento Musical
Sistema Operativo de Disco da Microsoft
LISTA DE SÍMBOLOS
Hz
K
@
#
*
C
D
E
F
G
A
B
-
-
-
-
-
-
-
-
-
-
-
-
Hertz
Kilo
Arroba
Sustenido
Asterisco
Nota Musical Dó
Nota Musical Ré
Nota Musical Mi
Nota Musical Fá
Nota Musical Sol
Nota Musical Lá
Nota Musical Si
19
SUMÁRIO
LISTA DE FIGURAS................................................................................................. 17
LISTA DE TABELAS................................................................................................. 17
LISTA DE SIGLAS.................................................................................................... 18
LISTA DE SÍMBOLOS .............................................................................................. 18
CAPÍTULO 1 – INTRODUÇÃO................................................................................. 21
CAPÍTULO 2 – FUNDAMENTAÇÃO TEÓRICA ....................................................... 22
2.1. Ondas Sonoras............................................................................................................................. 22
2.2. Altura Tonal ................................................................................................................................ 22
2.3. Volume........................................................................................................................................ 22
2.4. Timbre......................................................................................................................................... 22
2.5. Categorias Sonoras...................................................................................................................... 23
2.6. Envolvente da Onda .................................................................................................................... 27
2.7. Série Harmônica.......................................................................................................................... 28
2.8. Transformada de Fourier FFT (Fast Fourier Transform) ............................................................ 29
CAPÍTULO 3 – ESPECIFICAÇÃO DO PROJETO.................................................... 31
3.1. Objetivo....................................................................................................................................... 31
3.2. Descrição do Projeto ................................................................................................................... 31
3.3. A Tablatura na Prática................................................................................................................. 33
3.4 Descrição do Hardware ................................................................................................................ 38
3.5 Circuito Compressor e Limitador (CAG)..................................................................................... 39
3.6 Micontrolador PIC16F877 ........................................................................................................... 41
3.7. Componentes a serem utilizados................................................................................................. 43
CAPÍTULO 4 – SOFTWARE..................................................................................... 44
4.1. Especificação do Software .......................................................................................................... 44
4.2. Teorema da Amostragem ............................................................................................................ 44
4.3. Processamento do Sinal Digital com a Variância ....................................................................... 45
4.4. Processamento do Sinal Digital com o Desvio Padrão ............................................................... 46
4.5. Algoritmo Backpropagation........................................................................................................ 48
4.6. Fluxograma de Treinamento da Rede Neural ............................................................................. 51
4.7. Fluxograma de Reconhecimento Musical ................................................................................... 54
4.8. Rede Neural Utilizada ................................................................................................................. 55
4.9. Comunicação Serial .................................................................................................................... 55
4.10. Diagrama de Classe................................................................................................................... 56
4.11. Interface .................................................................................................................................... 57
CAPÍTULO 5 – CRONOGRAMA DE DESENVOLVIMENTO.................................... 58
CAPÍTULO 6 – ESTUDO DE VIABILIDADE ............................................................. 59
CAPÍTULO 7 – RESULTADOS OBTIDOS................................................................ 60
20
CAPÍTULO 8 – CONCLUSÃO .................................................................................. 63
CAPÍTULO 7 – REFERÊNCIAS BIBLIOGRÁFICAS................................................. 65
ANEXO 01 – Código do Processador PIC ................... Erro! Indicador não definido.
ANEXO 02 – Código de Análise da Correlação Entre as AmostrasErro! Indicador não definido.
21
CAPÍTULO 1 – INTRODUÇÃO
O projeto realiza a identificação de notas musicais tocadas por uma Guitarra através de
uma rede neural utilizando o algoritmo de Backpropagation. O resultado da identificação de uma
determinada nota é expresso em forma de uma tablatura. Com o aparecimento dos primeiros
instrumentos de cordas, este método foi logo adaptado devido ao seu caráter extremamente
prático e intuitivo e hoje é entendido por músicos de todo o mundo, principalmente iniciantes.
Existem diversos softwares que possuem pacotes de altíssima qualidade para o
processamento de audio como Sonar, ProTools, Guitar Pro. Na atualidade nenhum desses
softwares compõe um pacote capaz de identificar notas e acordes musicais para instrumentos de
corda. A utilidade de um reconhecimento de alto nível na composição musical pode ser capaz de
transcrever a partitura de todos os instrumentos em uma gravação de studio e os benefícios
seriam imediatos. Para o sistema proposto é realizado o reconhecimento de um único
instrumento de corda, pois em um primeiro momento o sistema auxiliará iniciantes, mas o ganho
do sistema pode ser extremamente expressivo. Com o sistema é possível realizar o
reconhecimento para qualquer outro instrumento de corda.
A idéia foi desenvolver um hardware e um software exclusivamente dedicado a
instrumentos de corda utilizando os seguintes componentes: PIC16F877 e um circuito
compressor. O compressor será necessário para melhorar a qualidade da transmissão do sinal de
áudio. Se o sinal for monitorado constantemente com a ajuda de um controle de volume, e
manualmente nivelar o sinal, ou seja, aumenta-se o ganho durante as passagens em que o sinal
está com nível baixo, e abaixa-se o ganho nas passagens em que o nível é alto.
Obviamente, esse tipo de controle manual é altamente restritivo, uma vez que é muito
difícil detectar picos de sinal, e mesmo que sejam detectados, é praticamente impossível nivelá-
los, por causa da rapidez com que ocorrem. Surge então a necessidade de um dispositivo
automático e rápido de controle de ganho, que monitore continuamente o sinal e ajuste o ganho
imediatamente de forma a maximizar a relação sinal/ruído sem que ocorra distorção. Tal
dispositivo é chamado de compressor ou limitador.
O PIC16F877 receberá o sinal analógico e converterá o sinal de tempo contínuo para o
tempo discreto. O software é capaz de identificar diversas variações de freqüências na guitarra
até a 4ª casa do instrumento.
22
CAPÍTULO 2 – FUNDAMENTAÇÃO TEÓRICA
2.1. Ondas Sonoras
O som é a vibração do ar, ou seja, variações na pressão do ar, que percebemos com
nossos ouvidos. Se essa pressão varia de acordo com um padrão repetitivo dizemos que o som
tem uma forma de onda periódica. Se não há um padrão perceptível no som este pode ser
chamado de ruído.
2.2. Altura Tonal
Quando se toca as cordas de um violão, nota-se que os sons são mais agudos quanto mais
a direita e mais graves a esquerda. Essa “altura” de um som, ou seja, se é alto ou baixo, é
chamado “altura tonal”.
Uma repetição de uma onda periódica é chamada de ciclo. Quando são comparados em
um osciloscópio sons com alturas tonais diferentes, nota-se que difere o número de ciclos por
unidade de tempo.
Quanto mais agudo o som, maior o número de ciclos por unidade de tempo e quanto mais
grave o som, menor será este número (freqüência). Dobrando a freqüência de um som, este é
elevado em uma oitava, então é possível dizer que a freqüência e a altura tonal estão relacionadas
logaritmicamente. A faixa de freqüências que podem ser ouvidas por um ouvido humano é de
aproximadamente 20 Hz para os sons mais graves até 20.000 Hz para os sons mais agudos.
2.3. Volume
Se uma corda é tocada fortemente, o som produzido será forte. Se for tocada suavemente,
o som produzido será fraco. O hardware é preparado para captar e amplificar o sinal. Para o
software a característica do volume é transparente.
2.4. Timbre
Um clarinete e uma flauta não produzem o mesmo som ao serem tocados com a mesma
altura tonal e o mesmo volume. Isso se deve ao fato de haver um fator distinto a mais para o som
além da altura tonal e o volume. Este fator é o timbre.
23
Observando-se sons com timbres diferentes, através de um osciloscópio, nota-se que as
formas de onda diferem entre si. De um modo geral, formas de ondas arredondadas produzem
um timbre mais suave enquanto que as formas de ondas pontiagudas dão um timbre mais
penetrante e estridente.
Na Tabela 1, são mostradas três formas de onda básicas, seus timbres característicos e os
instrumentos que se assemelham:
Tabela 1 – Formas de onda simples e seus timbres
A rede neural deve ser treinada para um tipo específico de instrumento musical, com uma
determinada marca ou determinado captador eletromagnético. As trocas de chaves e diferentes
regulagens no instrumento musical podem interferir no sucesso ou insucesso da identificação
sonora. Em uma aplicação de nível comercial o software poderia informar qual a característica
ideal e mais otimizada para que a identificação ocorra com sucesso. Para o treinamento da Rede
Neural será utiliza uma Guitarra Ibanez DX470 com captação NFS1.
2.5. Categorias Sonoras
Podemos encontrar dois tipos de sons: • Sons Complexos
• Sons Harmônicos ou Parciais
Os sons complexos são formados por ondas simples (ondas senoidais) que são os
harmônicos e a fundamental. Os harmônicos ou parciais são múltiplos da freqüência básica ou
fundamental. A fundamental de um som complexo é o componente de mais baixa freqüência. A
freqüência fundamental e seus harmônicos constituem a série harmônica. A resultante é uma
forma de onda que representa um som complexo. Na Tabela 2 está à representação matemática
correspondente à Figura 1 onde podemos encontrar exemplos de fundamental e seus harmônicos.
24
Tabela 2 – Harmônicos
Figura 1 – Exemplo de harmônicas
A estrutura de uma onda produzida por um instrumento musical pode ser representada por
um espectro gráfico. Na Figura 1, as barras verticais representam a amplitude da fundamental p1
e a dos parciais. Note que podem ser desenvolvidas várias formas de onda a partir das estruturas
harmônicas mais complexas. Por exemplo, na Figura 2 é apresentada à forma de onda e a
equação de uma onda dente-de-serra. Para a produção de uma onda dente-de-serra é necessária
25
uma série com um infinito número de senos. O espectro contém os componentes da onda até
2000 ciclos e possui uma fundamental de 100 ciclos. Esta onda contém todos os harmônicos.
Figura 2 – Onda dente-de-serra
Outra forma de onda bastante comum é a triangular. Um infinito número de co-senos
ímpares na série é necessário para produzir este tipo de onda. O espectro da Figura 3 contém os
componentes da onda até 2000 ciclos, com uma fundamental de 100 ciclos. Esta onda contém
somente os harmônicos ímpares.
Freqüências em ciclos por segundo ciclo amplitude tempo
Figura 3 – Onda triangular
Ciclos
(Hz)
26
A onda quadrada mostrada na Figura4, assim como a triangular, também contém só os
harmônicos ímpares.
Figura 4 – Onda quadrada
A forma de onda e, portanto, o timbre, é determinado pela classe de harmônicas somadas
a onda senoidal básica. Dito de outra maneira, quase todos os sons (com seus timbres diferentes)
que chegam aos nossos ouvidos incluem uma variedade de harmônicas diferentes e são estas as
responsáveis pelos inúmeros timbres característicos. Os gráficos que mostram os componentes
harmônicos de uma forma de onda são chamados espectros harmônicos. Chama-se de
harmônicas as freqüências que são múltiplos integrais de uma onda básica. O timbre (forma de
onda) é determinado pelos componentes harmônicos.
O grande desafio do sistema proposto é a diferenciação de timbre nos instrumentos de
corda. Existem diversas formas de se tocar uma mesma nota ou um acorde em um instrumento
de corda. A freqüência nesses casos é a mesma, mas o timbre faz o ouvido humano perceber a
sutil diferença entre as notas musicais.
Ciclos
(Hz)
27
2.6. Envolvente da Onda
Além dos três fatores básicos do som explicados anteriormente, altura tonal, volume do
som e o timbre, há outro fator importante que determina o som. Trata-se da variação de som em
um transcurso de tempo. Mais precisamente, a variação de cada um dos três elementos em um
transcurso de tempo que vai desde o começo do som até um ponto do tempo onde desaparece
completamente.
Se um violino for tocado com arco, por exemplo, geralmente o volume do som aumenta
gradualmente e também o timbre e altura tonal trocam ligeiramente. Estas trocas em um tempo
são o que determinam o timbre característico de um violino. Por outro lado, o relaxamento do
som de um piano é um caimento contínuo, sem este caimento seria muito difícil distingui-lo do
som de uma flauta.
Estas variações de um som em um transcurso de tempo são chamadas envolventes
(envelopes ou envoltórias). Envolventes são, portanto, as mudanças de altura tonal, volume e
timbre em um transcurso de tempo. Ocasionalmente, a mudança de volume (amplitude) em um
transcurso de tempo é também chamada envolvente. No caso da envolvente de amplitude de um
som, pode-se descrevê-la a partir de quatro parâmetros, conhecidos como ADSR:
• Ataque (A)
• Decaimento (D)
• Sustentação (S)
• Relaxamento (R)
Na Figura 5 vemos, em cima, a forma de onda original, sem variação na amplitude. Em baixo,
vemos a aplicação de um envelope na mesma onda, causando variações de volume no tempo.
Figura 5 – Envolvente aplicado a uma onda
28
Uma onda gerada por um instrumento de corda segue o padrão ADSR, e na Figura 5 na
parte AD indica que uma nova nota foi tocada e o software nesse momento pode realizar uma
nova busca para identificar uma nova nota, e enviar a mesma para a interpretação na rede neural.
O processamento do sinal sonoro é fundamental para o encontro do princípio ADSR. No sistema
o princípio ADSR foi descartado. Portanto o sistema sabe que uma nota (Lá) é uma nota (Lá),
mas não sabe quantas vezes a nota foi tocada.
2.7. Série Harmônica
De forma geral, uma série harmônica é resultado da vibração de algum tipo de oscilador
harmônico. As principais aplicações práticas do estudo das séries harmônicas estão na música e
na análise de espectros eletromagnéticos, tais como ondas de rádio e sistemas de corrente
alternada. A altura da nota produzida pela corda é determinada pela freqüência fundamental. As
demais freqüências, embora ouvidas, não são percebidas como alturas discretas, mas sim como
parte do timbre característico da corda.
Devido à limitação da elasticidade da corda, os primeiros harmônicos soam com maior
intensidade que os posteriores e exercem um papel mais importante na determinação da forma de
onda e conseqüentemente, no timbre do instrumento. O mesmo resultado pode ser obtido ao
colocar uma coluna de ar em vibração, embora neste caso não seja possível ver os nós e ventres
da onda.
A série harmônica é uma série infinita, composta de ondas senoidais com todas as
freqüências múltiplas inteiras da freqüência fundamental. Não existe uma única série harmônica,
mas sim uma série diferente para cada freqüência fundamental. A Tabela 3 mostra dois exemplos
de séries. Uma se inicia no Lá1(110 Hz) e a outra no Do1(132 Hz). A freqüência dá nota Do1 foi
arredondada para simplificar a tabela.
Tabela 3 – Exemplos de séries harmônicas
Lá1 Do1 Observações #
Nota Freqüência(Hz) Nota Freqüência(Hz)
1(F) Lá1 110 Do2 131 Freqüência fundamental
2 Lá2 220 Do3 262 Uma oitava acima da fundamental
3 Mi3 330 Sol3 393
4 Lá3 440 Do4 524 Duas oitavas acima da fundamental
5 Do#4 550 Mi4 655 Todos os harmônicos ímpares
29
subseqüentes soam desafinados em relação aos equivalentes temperados
6 Mi4 660 Sol4 786 Note que o Sol4 da série de Do é diferente da mesma nota na série de Lá (linha abaixo)
7 Sol4 770 Sib4 917
8 Lá4 880 Do5 1048 Três oitavas acima da fundamental
9 Si4 990 Ré5 1179
10 Do#5 1100 Mi5 1310
11 Ré#5 1210 Fa#5 1441
12 Mi5 1320 Sol5 1572
13 Fá5 1430 Lá5 1703
Veja que o Lá 5 é muito desafinado em relação à mesma nota na série de Lá (última linha)
14 Solb5 1540 Sib5 1834
Estas notas não pertencem a nenhuma escala ocidental por terem intervalo inferior a um semitom.
15 Sol5 1650 Si5 1965
16 Lá5 1760 Do6 2096 Quatro oitavas acima da fundamental
Matematicamente, representa-se o espectro sonoro como uma série de Fourier, uma função no
domínio das freqüências, em oposição à forma de onda que é uma função no domínio do tempo.
2.8. Transformada de Fourier FFT (Fast Fourier Transform)
A transformada de Fourier é um processo matemático extensamente utilizado hoje em dia
em espectrometria. É um processo de cálculo digital simplificado, desenvolvido por vários
autores, denominado FFT (Fast Fourier Transform). A simplificação introduzida por esse
algoritmo reduz as operações necessárias de N2 multiplicações complexa para N log2 N
multiplicações (N é o número de pontos da função a ser transformada).
Essencialmente, a Transformada de Fourier consiste em dada uma quantidade h como
função do tempo [h(t)], determinar a correspondente quantidade H como função da freqüência
[H(f)]. Geralmente, como um número complexo que também indica a fase, e vice-versa: dada
H(f), determinar h(t), onde h(t) é uma coleção de N números que indicam, por exemplo, a
intensidade em função do tempo de certa função periódica. Um exemplo seria uma nota musical
emitindo um determinado som por 1 segundo.
30
A corda provoca uma oscilação do ar, que pode ser convertida em oscilação elétrica, e
gravada. Um computador pode "ler" essa oscilação como uma coleção de pontos (números) que
indicam a intensidade em função do tempo. A Transformada de Fourier, aplicada a esses
"pontos", fornecerá um "mapa" das várias freqüências que compõem o som do instrumento na
forma de uma função intensidade x freqüência. Se na função original o tempo é segundo, na
transformada a freqüência será em Hz.
O algoritmo da transformada de Fourier não foi reescrito do zero. Foi implementado um
algoritmo já desenvolvido em linguagem C++. Portanto foi apenas entendido como é o
funcionamento do algoritmo e sua aplicação . A Transformada de Fourier foi utilizada, pois
reduziu a complexidade do sinal de entrada, minimizando as entradas da Rede Neural.
31
CAPÍTULO 3 – ESPECIFICAÇÃO DO PROJETO
3.1. Objetivo
A meta do projeto é produzir um software e um hardware capaz de reconhecer as notas
musicais de um instrumento (guitarra) de no máximo seis cordas, afinado em uma freqüência de
440 hz, e transcrevê-las em forma de tablatura. Caso ocorra sucesso na identificação das notas e
exista tempo disponível técnicas também serão submetidas ao algoritmo de identificação. O
software fará o reconhecimento e transcreverá toda a captação do sinal gerado pelo hardware em
tablatura. O software deverá gerar tablaturas para o padrão ASCII, portanto outros softwares
poderão utilizar o reconhecimento feito pelo projeto. O objetivo final deste projeto é alcançar um
nível elevado na análise, podendo iniciar o desenvolvimento de um produto futuramente
comercial e de alta utilidade e qualidade no ramo musical e digital. Atualmente, é preciso o
músico sentar e escrever a composição para um instrumento de corda. Futuramente, será possível
com total precisão o músico tocar e o computador registrar todos os toques musicais nos
mínimos detalhes, sem perdas de notas e técnicas musicais.
3.2. Descrição do Projeto
A idéia foi desenvolver um hardware e um software baseado em rede neural
exclusivamente dedicado a instrumentos de corda. O software é capaz de identificar as mais
diversas variações de freqüências possíveis em um instrumento de corda analisando todas as
harmônicas do instrumento. O conjunto hardware e software analisam a maneira que o músico
tocou no instrumento de corda, o que é representado em forma de tablaturas, uma forma mais
simplificada de representar uma nota musical em um instrumento de corda.
O circuito se dedica, primeiramente, a realizar toda a aquisição do sinal. O software
aplica a FFT, necessária para reconhecimento sonoro através de redes neurais. Caso haja
sucesso, e houver tempo suficiente, na identificação de notas o sistema poderá identificar, além
de toques básicos, técnicas que quando executadas nos dão uma simulação de efeitos sonoros,
que podem ser usados para dar mais brilho e vida na música, os mais conhecidos são:
1. LICK quando se tira duas ou mais notas de uma única palhetada ( Material Utilizado para
tocar instrumentos de corda).
32
2. BAND quando se faz uma nota em uma casa e puxa uma nota um tom mais alto puxando
a corda.
3. BAND INVERSO quando se faz uma nota em uma casa com a corda já puxada, depois
você deixará de esticá-la.
4. TWO-HAND deixar o indicador pressionando uma casa e fazer um revezamento com o
anular da mesma mão e o dedo médio da mão direita, esse método é usado na guitarra e
no baixo.
5. HARMÔNICO é executado nas 5a, 7a e 12a casas, encostando de leve o dedo na corda,
nas casas já mencionadas.
6. SOLO é executado tocando apenas uma corda de cada vez, como na guitarra. (Esse é o
toque básico).
7. FISICATTO é muito semelhante ao harmônico, só que é feito em qualquer casa,
encostando a mão direita de leve nas cordas, mas o som não é tão claro, OBS: esse é um
arranjo de guitarra.
8. FEED BACK é um arranjo usado em guitarras, mas pode ser usado em alguns modelos
de violão, segure a palheta de forma que quando você tocar o polegar direito toque de
leve na corda para causar o efeito de grito.
9. SLIDE é feito a nota em uma casa e puxamos uma outra nota na mesma corda em uma
casa diferente arrastando o dedo para cima.
10. SLIDE INVERSO é feito a nota em uma casa e puxamos uma outra nota na mesma corda
em uma casa diferente arrastando o dedo para baixo.
11. LIGADO é feito em uma das cordas tocando uma nota qualquer, depois você irá tirar
duas ou mais notas alternando os dedos sem palhetar o instrumento.
33
As técnicas identificadas pelo software são: BAND, BAND INVERSO, TWO-HAND,
HARMÔNICO, SOLO. O reconhecimento das técnicas será feito através de algoritmos que
serão aplicados após o reconhecimento sonoro realizado pela rede neural. Se houver tempo
disponível, novas técnicas serão representadas pelo sistema.
3.3. A Tablatura na Prática
A tablatura pretende representar uma progressão musical descrevendo o que deverá
ser tocado em cada corda. Há seis linhas, uma para cada corda, sendo a primeira linha a
correspondente à corda mais aguda, o Mi agudo (e), e sendo a última linha a do Mi grave (E).
Entre estas se encontram as correspondentes às outras cordas (B - Si, G - Sol, D - Ré e A - Lá).
Na figura 6, está um exemplo de uma tablatura vazia:
e|----------------------------------------------
B|----------------------------------------------
G|----------------------------------------------
D|----------------------------------------------
A|----------------------------------------------
E|----------------------------------------------
Figura 6 – Tablatura vazia
Conforme a figura 6 usa-se para desenhar cada corda o símbolo '-' repetido várias
vezes até ao fim da linha. Na figura 6, as cordas deverão encontrar-se afinadas. Note que o
primeiro “e” (Mi 1ª Corda) foi escrito em letra minúscula. Isto deverá ser feito para ajudar a
diferenciar as duas cordas Mi (diferencia 1ª corda (e) da 6 ª corda (E)). O “e” minúsculo indica a
corda Mi aguda e o “E” maiúsculo indica a corda Mi grave. Contudo, muitas tablaturas não têm
esta diferenciação, e então, a primeira corda é sempre (ou deverá ser sempre) a mais aguda.
Nota-se que outras afinações poderão ser indicadas. A letra no início de cada linha da tablatura
indica que nota deverá produzir a corda correspondente quando tocada solta. Isto é importante,
pois algumas músicas exigem afinações diferentes da normal.
Ao longo de cada linha irão ser escritas as notas que deverão ser tocadas na corda
correspondente. O sentido esquerda para a direita na leitura da tablatura significa o avançar do
tempo. Neste aspecto, a tablatura é similar à pauta. As notas são representadas por um número
que indica que divisão pisar, ou seja, antes de que trasto é que se deve colocar o dedo. A
tablatura não indica (normalmente) que dedo deve ser usado, tanto na mão esquerda para pisar as
cordas como na mão direita para fazê-las vibrar. Outra desvantagem da tablatura. Mas
geralmente a escolha do dedo é deixada ao critério do músico.
34
e|-0-2-4-5-4-2-0------------------------------------
B|---------------4-2-0-2-4-5------------------------
G|--------------------------------------------------
D|--------------------------------------------------
A|--------------------------------------------------
E|--------------------------------------------------
Figura 7 – Exemplo de tablatura
Na figura 7, o número 0 indica que se deve tocar a corda solta. Um 2 significa pisar a
corda respectiva na segunda divisão, ou seja, antes do segundo trasto metálico, e por diante. Foi
colocado um traço de intervalo entre cada nota para informar que as notas deverão ser todas
tocadas com o mesmo intervalo temporal entre elas. Mas um traço representa quanto tempo?
É esse o maior problema da tablatura: representar os intervalos de tempo e a duração
das notas. Há pelo menos três métodos. O mais usado é o de dosear os traços de intervalo de
modo a dar ao músico a noção da distância temporal. Por exemplo, conforme a figura 8 alterando
um pouco a tablatura anterior:
e|-0-2-4-5-4-2-0-------------------------------------
B|---------------4-2---0--2--4--5--------------------
G|---------------------------------------------------
D|---------------------------------------------------
A|---------------------------------------------------
E|---------------------------------------------------
Figura 8 – Noção temporal na Tablatura
Agora, sabemos que até ao primeiro 2 na corda Si (B) temos que dar sempre um dado
intervalo igual entre cada nota. Após este 2 (que é um Dó sustenido, C#), deve-se fazer uma
pausa de duração tripla diferentemente da pausa usada anteriormente entre as notas. Depois,
toca-se a corda B solta (o símbolo 0 que vem a seguir aos três traços) e tocam-se as notas
seguintes, mas agora com um intervalo entre elas duplo do usado inicialmente, devido ao uso de
dois traços. Assim, consegue-se dar uma noção de relação entre os intervalos na mesma música,
mas continuamos sem saber quanto tempo decorre em cada intervalo. Abaixo estão descritas as
mais diversas técnicas que o sistema poderá identificar:
35
Solo: Consiste em simplesmente tocar a nota musical normalmente sem nenhuma técnica. Apenas a batida normal na corda musical. Um exemplo da técnica pode ser mostrado na figura 9
E|-------------------------------------:||
B|-------------------------------------:||
G|-------------------------------------:||
D|-----------------------------:--------||
A|---------0---0---------2-----:--------||
E|-0-0-1-2---2---2-2-1-0---0-0---------:||
Figura 9 – Técnica Solo
Slide (Deslizada):
Consiste em deslizar o dedo no braço de uma posição para outra, de uma nota para outra.
Veja o exemplo abaixo. apertando na casa 2, desliza até a 10, da 6 desliza até a 7, etc. Um
exemplo da técnica pode ser mostrado na figura 10.
e|------------------------------------------------------
B|------------------------------------------------------
G|------------------------------------------------------
D|-2/10---6/7--6----3----2/10---6/7---6---3-------------
A|------------------------------------------------------
E|------------------------------------------------------
Figura 10 – Técnica Slide
Bend:
O bend consiste em fazer uma nota, espichar a corda de maneira que ela soe como a
próxima nota, pode ser full (bend completo), o que consiste em soar como dois frets (trastes)
mais próximos do corpo da guitarra ou half (meio bend), soa como um fret mais agudo apenas. A
notação varia, esteja atento na tablatura para a explicação da notação. Um exemplo da técnica
pode ser mostrado na figura 11.
e|-7b8-7b8-7b8-7b8-8b10-----------
B|--------------------------------
G|--------------------------------
D|--------------------------------
A|--------------------------------
E|--------------------------------
Figura 11 – Técnica Bend
36
Vibrato:
Tensiona-se a corda como se fosse um bend, só que rapidamente, indo e voltando. O
símbolo mais usual é mesmo o ~ (til). Um exemplo da técnica pode ser mostrado na figura 12.
E|-------------12-15~--
B|----------13---------
G|-------14------------
D|----14---------------
A|-12------------------
E|---------------------
Figura 12 – Técnica Vibrato
Hammer on:
Poderia chamar de martelada. A idéia é esta, martela-se com o dedo no braço da guitarra
produzindo som sem dar palhetada. A notação normal é H, de hamer on. Na figura 13, 7h9h10
significa ter um dedo na casa 7, e com outro bater na casa nove e depois com outro ainda bater
na casa 10. Veja a figura 13 neste trecho da escala em B (si).
h = hammer-on E|----------------------------------
B|----------------------------------
G|----------------------7h9h10------
D|---------------7h9h10-------------
A|--------7h8h10--------------------
E|-7h8h10---------------------------
Figura 13 – Técnica Vibrato
Pull Off
Pull off é o complemento natural do hammer on. Desta vez retira-se o dedo, produzindo o som.
Vamos aproveitar à mesma escala do exemplo descrito na figura 13, só que voltando como
descrito na figura 14.
p = pull-off E|---------------------------------
B|---------------------------------
G|-10p9p7--------------------------
D|--------10p9p7-------------------
A|---------------10p8p7------------
E|----------------------10p8p7-----
Figura 14 – Técnica Pull Off
37
Tapping:
Tapping consiste em combinar hammer ons e pull offs utilizando as duas mãos, não
utilizando a palheta. No Lick descrito na figura 15, Se utiliza o dedo indicador da mão direita
para pressionar as casas 8 e 10 (ou outro dedo como preferir). Não esquecendo que H é hammer
on e P é de Pull off .
E|-0h5h8p5-0h5h8p5--0h5h8p5--0h5h8p5--0h5h10p5--0h5h10p5--
B|--------------------------------------------------------
G|--------------------------------------------------------
D|--------------------------------------------------------
A|--------------------------------------------------------
E|--------------------------------------------------------
E|-0h5h10p5------
B|---------------
G|---------------
D|---------------
A|---------------
E|---------------
Figura 15 – Técnica Tapping
Harmonics - Harmônicos:
Pode-se criar um harmônico natural (natural harmonic - NA) tocando no fret
correspondente a uma oitava acima da nota tocada. Na figura 16, se é tocada uma nota na casa 3,
deve-se encostar levemente o dedo na casa 15 (12 casas, uma oitava).
E|----------NH-----
B|-------NH-9------
G|----NH-7---------
D|-NH-5------------
A|-3---------------
E|-----------------
Figura 16 – Técnica Harmonics
38
3.4 Descrição do Hardware
O hardware do projeto é composto por uma guitarra elétrica (Ibanez DX470). A guitarra
vai gerar o sinal puramente analógico. O sinal será tratado primeiramente pelo circuito
compressor ou CAG (Controle automático de ganho). O CAG é responsável por criar um padrão
de ganho para o sinal de entrada, o sinal não terá uma amplitude inferior a zero Volt, mas
também não terá um ganho superior a cinco Volts. É evidente que esse tratamento é feito no
momento em que o músico estará tocando o instrumento, com os volumes liberados. O
tratamento do sinal realizado pelo CAG é de forma contínua, ou seja, após a alimentação elétrica
do circuito. Posteriormente o sinal é direcionado ao PIC16F877 que realizará a conversão
analógica digital, e também realizará a comunicação serial com o computador. Conforme
descrito na figura 17.
Figura 17 – Diagrama do sistema
39
3.5 Circuito Compressor e Limitador (CAG)
O circuito compressor nada mais é do que um controle automático de ganho. Em contato com a Fabricante de equipamentos eletrônicos Onner foi possível obter a teoria de funcionamento do circuito compressor. Na figura 18 demonstra a forma geral do circuito.
Figura 18 – Circuito Geral Compressor
1. O sinal passa por um buffer. Existe um trimpot entre esse buffer e o OTA, afim de ajustar um
offset entre os pinos + e -;
2. A saída do OTA é conectada à um estágio de buffers, pois esse pino possui alta impedância,
fato este que impossibilita a excitação direta de um estágio de controle.
3. Esse estágio de buffer possui 3 saídas, sendo uma, o sinal processado, outra o sinal em fase e,
por último, uma saída com sinal em contra-fase;
4. Esses sinais em fase e contra fase são encaminhados a circuitos retificadores, com ganhos
diferentes.
5. Os sinais provindos dos retificadores são somados, cada um com o seu respectivo (fase e
contra-fase)
40
6. Os sinais, somados, de fases opostas são aplicados ao potenciômetro Attack e juntamente com
o capacitor C ajustam uma constante RC de carga, que determina o Attack;
7. Esse sinal passa pelo potenciômetro Sustain, que ajusta a constante RC de descarga de C,
determinando o Sustain.
8. O sinal (DC) é direcionado então ao controle de ganho do OTA, que controla, assim, a
amplitude do sinal.
9. Por fim, a chave permite comutar a saída, afim de utilizar o sinal processado ou "bypass" (sem
compressão, "original")
Esse tipo de circuito também é conhecido como AGC ou CAG (Controle automático de
ganho). Porém, com algumas particularidades para a utilização com guitarras (relativos aos
tempos, ganhos e impedâncias envolvidos.
41
3.6 Micontrolador PIC16F877
Para a discretização do sinal sonoro será utilizado o microntrolador PIC16F877, descrito
na Figura 19 que receberá o sinal analógico através do pino RA0 e realizará a comunicação serial
através dos pinos RC7/RX/DT e RC6/TX/CK.
Figura 19 – Microcontrolador PIC16F977
Dentre as principais características deste microcontrolador, estão:
• Possui arquitetura RISC;
• Conjunto de apenas 35 instruções;
• Freqüência máxima de operação de 20MHz;
• Ciclo de instrução de 200us;
• Freqüência de trabalho interna dividida por 4;
• 8K de memória de programa;
• 368 bytes de memória RAM;
• Instruções executadas em 1 ciclo de clock;
• Modos de endereçamento direto e indireto;
• Opções de seleção do oscilador de clock;
• Consumo de corrente típico de 0,6 mA a 3V e 4MHz;
• Interface serial USART;
• Conversor A/D de 8 a 10 bits.
42
A aquisição do sinal realizada pelo microcontrolodor PIC é descrita conforme a figura 20.
Antes de o sinal puramente analógico ser injetado do pino RA0, é submetido ao circuito
grampeador. O circuito além de enquadrar o sinal entre zero Volt e cinco Volts aplica um
ganho no sinal para aumentar a amplitude do sinal.
Após o tratamento do microcódigo aplicado ao sinal, é preciso transcrever o sinal no
padrão RS232. O PIC realiza comunicação serial em nível TTL (0 a 5V). O padrão RS232
utilizado pelo computador é de +12V a -12V. Por esse motivo foi utilizado o MAX232.
Figura 20 – Circuito da Aquisição do Sinal
43
O programa escrito em Linguagem C para o PIC 16F877 terá as seguintes características:
• 8 Bits de Conversão ADC;
• Clock = 20Mhz;
• Baund Rate = 115000;
• Amostragem de 4 Khz;
•
3.7. Componentes a serem utilizados
• PIC16F877;
• Guitarra;
• Cabos de Rede;
• Resistores, Capacitores, Diodos;
• Circuito CAG;
• DB9;
• TL081;
• XTAL – 20 Mhz;
44
CAPÍTULO 4 – SOFTWARE
4.1. Especificação do Software
O software é desenvolvido utilizando conceitos de orientação a objetos na linguagem
C++. Sua estrutura tem como base a forma de conceito de três camadas, sendo uma delas de
interface e outra de negócio. Para a aplicação não é necessário à camada de banco de dados, pois
o número de amostras é insuficiente para utilização desta camada. A classe interface possui
todos os métodos que interagem com o usuário graficamente através da tablatura. As classes de
negócio foram divididas em três níveis: a classe cSerial, responsável pela comunicação com o
circuito. A classe cTablatura responsável pela representação gráfica dos timbres e técnicas
musicais na tela e a classe cNeural responsável pelo treinamento e reconhecimento do sinal
sonoro.
4.2. Teorema da Amostragem
O teorema de Nyquist ou da amostragem, provê uma regra que determina o intervalo de
freqüência ideal para que um sinal seja amostrado e recuperado sem perda de informação.
Um sinal limitado em freqüência, que não tem nenhuma componente espectral acima da
freqüência fm Hz, é determinado univocamente por seus valores tomados a intervalos uniformes
menores que 1/2fm . Portanto podemos representar a relação conforme a Eq. (1).
max2 mo ff ≥ (1)
Com base no teorema de Nyquist, foi determinado que a maior freqüência utilizada no
projeto fosse 2 kHz. Esta freqüência foi escolhida pela tabela 3 que possui a freqüência da nota
Lá quatro oitavas abaixo da freqüência fundamental. Com quatro oitavas abaixo, a nota Lá
possui uma freqüência maior do que a última nota a ser reconhecida pelo projeto. No caso seria a
nota Mi aguda na 4ª casa do instrumento musical. A nota Lá com quatro oitavas encontra-se na
corda Mi aguda 17ª casa do instrumento musical.
Portanto a taxa de amostragem utilizada foi de 4 kHz. Internamente o microcontrolador
consegue uma resolução de 1024 pontos do sinal com essa taxa de amostragem.
45
4.3. Processamento do Sinal Digital com a Variância
O hardware envia 1024 pontos do sinal por vez ao computador. A cada envio de amostras
é aplicado a variância para selecionar as amostras mais significativas. A variância testa a
variabilidade do sinal, caso o músico não tocar o instrumento não haverá sinal e
conseqüentemente a variância ficará próxima de zero conforme a figura 21.
O variação do sinal é diferente para cada corda. Na figura 22 é demonstrado que para a corda Mi
grave solta, que possui freqüência aproximada de 330Hz, a variância é alta (Var = 1139,815).
Por outro lado a corda Mi aguda tocada na 4ª casa do instrumento que possui freqüência
aproximada de 1760 Hz e possui uma variância baixa (Var = 304,5776). A figura 21 mostra que
a variância aplicada a ausência do sinal musical fica próxima de zero. Portanto são selecionadas
amostras que possuem variância superior a 100. Este padrão foi adotado experimentalmente e
resultou em amostras significativas do sinal musical.
O processo facilitará a construção do universo de amostras para o treinamento da rede
neural, pois será possível tocar a mesma nota por minutos e capturar um alto número de
amostras. Para um tempo de aproximadamente 20 segundos tocando a mesma nota é possível
capturar em torno de 40 amostras de uma mesma nota. Esta proporção foi determinada
experimentalmente, pois pode variar se o clock do microcontrolador for alterado, se a velocidade
de comunicação for alterada e se a quantidade de pontos amostrados for alterada. Essa etapa
facilitará o treinamento e a precisão da rede neural. A equação (5) demonstra a relação que será
aplicada ao sinal discretizado.
Var = 1,265143 (Nenhuma Nota)
0
20
40
60
80
100
120
140
160
180
1 13 25 37 49 61 73 85 97 109 121 133 145 157 169 181 193 205 217 229 241 253
Figura 21 – Ausência de sinal musical
46
Var = 304,5776 (Nota e - 4)
0
20
40
60
80
100
120
140
160
1 13 25 37 49 61 73 85 97 109 121 133 145 157 169 181 193 205 217 229 241 253
Var = 1139,815 (Nota E - 0)
0
20
40
60
80
100
120
140
160
180
1 13 25 37 49 61 73 85 97 109 121 133 145 157 169 181 193 205 217 229 241 253
Figura 22 – Sinais musicais reais
A variância considera que os argumentos são uma amostra da população. Na Eq. (2), x é
média total da amostra MÉDIA(núm1,núm2,…) , _
x é um único ponto da amostra e n é o
tamanho da amostra.
(2)
4.4. Processamento do Sinal Digital com o Desvio Padrão
Após o processo descrito na sessão 4.2 é aplicado a FFT nas 1024 amostras que reduzirá
o universo de amostras inicial de 1024 para 512. Tal fato ocorre, pois as primeiras 512 amostras
são a FFT e as 512 seguintes são os espelhos das primeiras 512 amostras. Esse ainda é um
universo de amostras muito amplo e custará a rede neural um grande processamento e um
universo muito elevado de amostras.
47
A rede neural realiza uma série de multiplicações matriciais, basicamente seria o número
de neurônicas da camada de entrada*neurônicos da camada oculta*neurônios da camada de
saída. O custo computacional cresce exponencialmente, pois conforme descrito na sessão 4.5
existem cálculos matriciais distintos e repetitivos no processo algorítmico. Os cálculos são
baseados no número de neurônios de cada camada.
Portanto será aplicado o desvio padrão na FFT que reduzira o universo de amostras de
512 para 64 amostras. Dos 512 pontos resultantes da FFT a cada 8 pontos é aplicado o desvio
padrão. O cálculo estatístico mede a variabilidade dos 8 valores fazendo com que a FFT resulte
na aparência da figura 24.
O conjunto da figura 23 e a figura 24 mostram uma simulação do que é realizado pelo
software antes de o sinal ser apresentado a rede neural. O desvio padrão é calculado usando-se o
método "não-polarizado" ou "n-1". Na Eq. (3), x é média da amostra MÉDIA(núm1,núm2,…) ,
_
x é um único ponto da amostra e n é o tamanho da amostra.
(3)
512 Amostras
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
20000
1 20 39 58 77 96 115 134 153 172 191 210 229 248 267 286 305 324 343 362 381 400 419 438 457 476 495
Figura 23 – FFT original
64 Amostras
0
1000
2000
3000
4000
5000
6000
7000
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63
Figura 24 – Desvio padrão na FFT original
48
4.5. Algoritmo Backpropagation
Para o desenvolvimento do sistema é utilizada uma rede multicamadas que é uma etapa
importante na direção da construção de máquinas inteligentes.
O objetivo é adquirir uma massa de áudio aparentemente amorfa de elementos parecidos
e ensina-la a executar tarefas úteis. Uma rede multicamada pode computar qualquer coisa. Dado
um conjunto de entradas, podemos usar unidades de soma de limites como se fossem simples
portas AND, OR e NOT, ajustando corretamente o limite dos pesos das conexões.
Para o tema proposto será aplicado um algoritmo da rede de retropropagação. Espera-se
obter a solução para a classificação das notas musicais geradas. A unidade em uma rede de
retropropagação requer uma função de ativação ligeiramente diferente dos perceptrons. Ambas
as funções estão descritas na Figura 25. Uma unidade de retropropagação ainda soma as suas
entradas ponderadas, mas, ao contrário do perceptron, ela produz um valor real entre 0 e 1 como
saída, com base em uma função sigmóide, que é contínua e diferenciável, conforme exigência do
algoritmo de retropropagação. Seja a soma ponderada das entradas de uma unidade. A equação
para o produto da unidade é fornecido pela Eq. (4):.
somae
saida−+
=1
1 (4)
Observe que a soma é 0, o resultado será 0,5. Conforme aumenta a soma, o resultado
passa a ficar mais próximo de 1. Conforme ela diminui, por outro lado, o resultado fica mais
próximo de 0.
Figura 25 – Função do Perceptron e Função de Retropropagação
Assim como o perceptron a rede de retropropagação começa com um conjunto de pesos
aleatórios. A rede ajusta seus pesos toda vez que recebe um par entrada-saída. Cada par requer
dois estágios: uma passagem para frente e uma para trás. A passagem para frente envolve
49
apresentar um exemplo de entrada para a rede e deixar as ativações fluírem até chegarem a
camada de saída. Durante a passagem para trás, o produto da rede obtido é comparado com a
saída objeto, e estimativas de erro são computadas para as unidades de saída. Os pesos
conectados as unidades de saída podem ser ajustados para reduzir esses erros. Depois podemos
utilizar as estimativas de erro das unidades de saída a fim de derivar estimativas porá unidades
das camadas ocultas. Finalmente os erros são propagados para trás até a conexão cuja raiz está
nas unidades de entrada
Ao contrário do algoritmo de aprendizagem por perceptrons o algoritmo da
retropropagação atualiza seus pesos incrementalmente, depois de ver cada par entrada-saída.
Depois que ele tiver visto todos os pares entrada-saída, podemos dizer que uma época foi
concluída. O treinamento de uma rede de retropropagação em geral requer muitas épocas.
O processo algorítmico descrito foi utilizado no sistema pela classe cNeural. A rede
neural construída no sistema possui a mesma arquitetura do algoritmo descrito ou seja 3
camadas.
Algorítmo
Dado: Um conjunto de pares de vetor entrada-saída.
Computar: Um conjunto de pesos para uma rede de três camadas que mapeia entrada nas
saídas correspondentes.
1. Seja o número de unidades da camada de entrada, conforme determinado pelo comprimento
dos vetores de entrada de treinamento. Seja C o número de unidades da camada de saída. Agora
escolha B, o número de unidades da camada oculta. Conforme mostra a Figura 26 as camadas de
entrada e oculta têm, cada uma, uma unidade extra usada como limite; portanto, as unidades
dessas camadas as vezes serão indexadas pelos intervalos (0, ... , A) e (0, ... , B). Denotamos os
níveis de ativação das camadas de entrada por xj, da camda oculta por hj e da camada de saída
por oj, as unidades ocultas. Da mesma maneira, os pesos que conectam a camada oculta a
camada de saída são denotados por ω 2ij com i indexando as unidades ocultas e j, as unidades
de saída.
50
Figura 26 – Uma rede multicamada
2. Inicializa os pesos da rede. Cada peso deve ser ajustado aleatoriamente entre um número
entre -0,1 e 0,1.
ω 1ij = aleatório(-0,1 , 0,1) para todo i = 0, ... , A, j=1, ... B
ω 2ij = aleatório(-0,1 , 0,1) para todo i = 0, ... , B, j=1, ... C
3. Inicialize a ativação das unidades de limite. Seus valores nunca mudam.
x0 = 1,0
h0 = 1,0 4. Escolha um par entrada-saída. Suponha que o valor de entrada seja xi e que o vetor de saída
objeto seja yi, Atribua níves de ativação as unidades de entrada.
5. Propague a ativação das unidades da camada de entrada para as unidades da camada oculta
usando a função de ativação descrito pela Eq. (5).
Bjtodoparaijxiw
hjA
ie,...,1
11
1
0
=+
=
∑ =
−
(5)
Observe que em Eq. (5) i varia de 0 a A, ω1oj é o peso-limite para a unidade oculta j e x0 é sempre 1,0. 6. Propague as ativações das unidades da camada oculta para as unidades de camada de saída. Conforme a Eq. (6)
Cjtodoparaijhiw
ojB
ie,...,1
21
1
0
=+
=
∑ =
−
(6)
51
Novamente em Eq. (6) o peso limite ω20j da unidade de saída j tem importância na soma
ponderada. h0 é sempre 1,0.
7. Compute os erros das unidades das camadas de saída, denotada por j2δ conforme Eq. (7). Os
erros baseiam-se na saída real da rede (oj) e na saída objeto (yi).
Cjtodoparaojyjojojj ,...1))(1(2 =−−=δ (7)
8. Compute os erros das unidades da camada oculta, denotada por S1j conforme Eq. (8)
BjtodoparajiwihjhjjC
i
,...,12*2)1(1
=−= ∑=
δδ (8)
9. Ajuste os pesos entre a camada oculta e a camada de saída. O coeficiente de aprendizagem é
denotado por η ; sua função é a mesma da aprendizagem por perceptrons. Um valor razoável
para é 0.35, conforme Eq. (9)
hjijij .2.2 δηω =∆ para todo i = 0, ... , B; j = 1, .... , C (9)
10. Ajuste os pesos entre a camada de entrada e a camada oculta conforme Eq. (10)
xijij .1.1 δηω =∆ para todo i = 0, ..., A; j = 1, ..., B (10)
11. Vá para a etapa 4 e repita. Quando todos os pares entrada-saída tiverem sido apresentados à
rede, uma época terá sido completada. Repita as etapas de 4 a 10 para tantas épocas quanto
forem desejadas.
4.6. Fluxograma de Treinamento da Rede Neural
No treinamento da rede neural os sinais de uma mesma nota são armazenados em um
arquivo por um período de aproximadamente quatro minutos. Após esse intervalo de tempo é
parado a gravação manualmente. A saída desejada para uma determinada nota é preenchida
conforme a tabela 4. A nota “E – 0”, por exemplo, que dizer tocar a nota Mi grave com a corda
solta e assim por diante.
52
Após a aplicação do algoritmo da FFT e do desvio padrão os sinais são armazenados no
arquivo de treinamento que é utilizado pela rede neural. O fluxo geral do treinamento é descrito
na figura 27.
Tabela 4 – Saída desejada
Nota Saída Desejada Nota Correspondente
1 00000 E - 0 2 00001 E - 1 3 00010 E - 2 4 00011 E - 3 5 00100 E - 4 6 00101 A - 0 7 00110 A - 1 8 00111 A - 2 9 01000 A - 3 10 01001 A - 4 11 01010 D - 0 12 01011 D - 1 13 01100 D - 2 14 01101 D - 3 15 01110 D - 4 16 01111 G - 0 17 10000 G - 1 18 10001 G - 2 19 10010 G - 3 20 10011 G - 4 21 10100 B - 0 22 10101 B - 1 23 10110 B - 2 24 10111 B - 3 25 11000 B - 4 26 11001 e - 0 27 11010 e - 1 28 11011 e - 2 29 11100 e - 3 30 11101 e - 4
53
Figura 27 – Fluxograma de Treinamento
54
4.7. Fluxograma de Reconhecimento Musical
Os processos algorítmicos, realizados pelo fluxograma de classificação da nota musical
descritos na figura 28, são semelhantes aos processos do fluxograma de treinamento, descrito na
figura 27. Nesta etapa algorítmica, o que diferencia os dois fluxogramas é que o software não
utiliza o arquivo de treinamento, e sim o arquivo de amostras real. Para a classificação do
arquivo de notas o software carrega o arquivo de pesos que foi gerado na etapa de treinamento.
Caso obtenha sucesso no reconhecimento o software monta a tablatura musical.
Figura 28 – Fluxograma de Reconhecimento
55
4.8. Rede Neural Utilizada
A configuração da rede neural foi determinada experimentalmente, ou seja, no momento
do treinamento da rede neural. É relacionando o número de neurônios na camada de entrada,
camada oculta e a taxa de aprendizagem. O número de neurônios na camada de saída foi
determinado pelo conjunto de notas a serem identificadas, que no total são 30 notas musicas
gerando 52 combinações, conforme a tabela 4.
A figura 29 mostra a rede utilizada, que possui 64 neurônios na camada de entrada, 27 na
camada oculta e 5 na camada de saída.
O algoritmo da rede neural foi escrito exatamente como descrito na sessão 4.5 guardando
os pesos em um arquivo de texto para a classificação das notas músicais.
Figura 29 – Rede Neural
4.9. Comunicação Serial
A comunicação entre o software e o hardware é feita através da porta RS232, utilizando
uma API de comunicação (ActiveX Automation) que a ferramenta Borland Builder
disponibiliza. Os parâmetros de configuração são definidos de acordo com a Tabela 5.
Tabela 5 – Tabela de Parâmetros da Serial
Bits por segundo 115200 Bits de dados 8 Paridade Nenhum Bits de parada 1 Controle de fluxo Nenhum
..................................
.............
..................................
.............
1 2 3 4 63 64
1 2 3 27
1 2 3 4 5
56
4.10. Diagrama de Classe
O diagrama de classes descrito na figura 30 mostra de que forma os componentes dos
fluxogramas dos itens 4.6 e 4.7 existem no software. Existe um classe cErro descrita no modelo
que foi utilizada para o tratamento de erros.
Figura 30 – Diagrama de classe
57
4.11. Interface
A figura 31, mostra a interface utilizada pelo software. A interfece foi montada pensando
em futuramente utilizar outros instrumentos para o reconhecimento em forma de tablaturas. Para
o sistema construído o software funciona apenas selecionando a opção Guitarra.
Figura 31 – Interface
58
CAPÍTULO 5 – CRONOGRAMA DE DESENVOLVIMENTO
O cronograma de desenvolvimento utilizado ao longo do projeto está representado na
tabela 6. Para o controle das atividades durante a fase de projeto foi utilizada a ferramenta
Microsoft Excel 2003.
Tabela 6 – Cronograma
59
CAPÍTULO 6 – ESTUDO DE VIABILIDADE
O estudo de viabilidade leva em conta o custo de componentes, horas de trabalho e o
custo de placas padrões disponíveis para compra no Unicenp.
Tabela 7 – Valores do estudo de viabilidade
Recurso Quantidade Custo Unitário Custo Guitarra 1 R$ 2500,00 R$ 2500,00 Circuito CAG 1 R$ 230,00 R$ 230,00 Cabo RCA 1 R$ 8,00 R$ 8,00 Componentes Eletrônicos 100 R$ 200,00 R$ 200,00 Horas de trabalho 1200 R$ 20,00 R$ 24000,00 Total R$ 26938,00
Neste estudo de viabilidade não esta sendo levada em consideração à infra-estrutura de
laboratórios, licenças de ferramentas de desenvolvimento de software, ferramentas de projeto de
hardware e nem software de acompanhamento de projetos.
60
CAPÍTULO 7 – RESULTADOS OBTIDOS
Os testes foram realizados após a montragem do arquivo de treinamento descrito na
sessão 4.6. Na figura 32 extraída diretamento do software final é possível escolher o número de
épocas e a taxa de treinamento. Após a escolha dos valores é precionado o botão “Treinar Rede”.
Quando o treinamento estiver completo a taxa de acerto é obtida na label “Taxa de Acerto”. Os
valores Número de épocas, Taxa de Aprendizagem, Neurônios na camada de entrada e
Neurônios na camada oculta, foram se alternando até que a rede apresenta-se uma taxa de acerto
significativa. O processo completo de treinamento e ajuste dos valores da rede neural foi
realizado em aproximadamente duas semanas.
Figura 32 – Janela de treinamento
O sistema obteve uma taxa de acerto aproximada de 92,20 % para 3181 épocas com uma
taxa de aprendizagem de 0,6. Esse resultado foi obtido experimentalmente após várias tentativas
e combinações distintas. O treinamento da Rede Neural Backpropagation foi aplicado apenas
para a técnica de solo. Na tabela 8 encontra-se a taxa de acerto para cada nota musical utilizada
no treinamento. Foi utilizado um arquivo com 2533 registros para o treinamento. Esse número
foi determinado automaticamente pela quantidade de amostras extraídas e pela correlação
aplicada no arquivo original de amostras que possuia 4555 amostras.
Inicialmente foi embaralhando o arquivo de 4555 amostras e inserido o mesmo na rede
neural. O objetivo do sistema estaria praticamente completo, mas essa abordagem não obteve
sucesso. Ao adicionar o arquivo completo na rede, a mesma não obteve taxa de acerto qualquer.
Várias tentativas e configurações diferentes foram abordadas em relação a taxa de aprendizagem
61
e número de neurônios nas camadas da rede, mas a mesma não conseguia classificar o arquivo de
notas. Portanto foi desenvolvido um algorítmo que testava a correlação de uma nota (por
exemplo E-0) excluíndo ela mesma em relação ao resto do arquivo. O algororítmo utilizado para
auxilio no treinamento foi implementado em Microsoft Visual Studio 6.0. O código pode ser
encontrado em Anexo 2. A implementação não foi feita no software final devido ao termino de
tempo para o desenvolvimento do sistema.
Após essa abordagem algorítmica foi percebido que muitas amostras continham uma
correlação muito alta em relação ao resto das amostras. A nota “G-4” teve uma correlação muito
alta em relação a nota “B-0”. Tal fato ocorre devido a nota ter praticamente as mesmas
características restando apenas a diferenciação através do timbre.
Uma outra parte também desenvolvida no algoritmo de correlação seleciona notas que
possuem correlação menor que 0,75. Experimentalmente quando se ultrapassava tal valor de
correlação a rede não conseguia classificar significativamente o arquivo de notas musicais. Esse
critério trouxe algumas consequências como a não classificação das notas: “A-0”, “A-1”, “A-2”,
“G-4”, “B-0”, “e-0” e “e-1” . Experimentalmente após várias tentativas e números de épocas
relativamente altos, tais notas não obtiveram uma taxa de treinamento significativamente alta,
para que as mesmas pudessem ser utilizadas em um processo algorítmico.
Tabela 8 – Época por Nota
Nota Taxa Acerto Taxa Erro Qtd Testada
E - 0 78,15 21,85 238
E - 1 93,61 6,39 266
E - 2 56,36 43,64 220
E - 3 100,00 0,00 297
A - 3 87,68 12,32 341
A - 4 99,54 0,46 216
D - 0 82,52 17,48 143
D - 1 97,05 2,95 237
D - 2 96,08 3,92 153
D - 3 98,50 1,50 133
D - 4 100,00 0,00 146
G - 0 100,00 0,00 245
G - 1 91,14 8,86 158
G - 2 99,28 0,72 278
G - 3 100,00 0,00 254
B - 1 100,00 0,00 145
B - 2 98,37 1,63 184
B - 3 37,19 62,81 121
B - 4 98,09 1,91 157
e - 3 96,64 3,36 119
e - 4 100,00 0,00 122
e - 2 100,00 0,00 148
62
A Figura 33 demonstra a taxa de erros em relação ao número de épocas obtido pelo software.
Figura 33 – Erros x Épocas
Foi observado experimentalmente que não existia evolução significativa da taxa de acerto
após a época 3181. Testes foram realizados e algumas notas obtinham um sucesso mais
expressivo mas em compensação outras notas fracassavam mais no processo de classificação.
A tabela 8 contém todas as notas que foram utilizadas para a montagem da tablatura. Um
outro fator que não foi reconhecido algoritmicamente foi à quantidade de vezes que o músico
tocou a mesma nota no instrumento musical. Uma análise mais profunda poderia ser realizada
para resolver o problema baseando-se no princípio ADSR descrito na sessão 2.6.
Experimentalmente poderia ser feita uma análise no sinal antes da rede neural, dessa forma seria
possível saber onde foi o ataque e quantas vezes ele ocorreu para uma determinada nota musical.
Em relação às técnicas musicais descritas na sessão 3.3, não houve tempo suficiente para
realizar tais reconhecimentos, a inclusão das técnicas no sistema não é trivial. Análises
matemáticas e algorítmicas diferenciadas poderiam ser feitas para que o timbre pudesse ser
tratado de forma diferenciada. Algumas técnicas podem ser reconhecidas com o processo
algorítmico realizado com a FFT, mas para analisar formas de timbres diferentes a FFT não foi
suficiente, é o caso das notas G – 4 e B – 0.
63
CAPÍTULO 8 – CONCLUSÃO
Uma das principais dificuldades no desenvolvimento deste trabalho foi não ter
encontrado referências concretas sobre o reconhecimento de áudio em instrumentos de corda. O
desenvolvimento do trabalho foi todo construído por referências que realizam reconhecimento de
voz. A maioria das referências com o reconhecimento de voz não utilizam a FFT por não
apresentar resultados significativos usando tal método.
Ao concluir o desenvolvimento dos módulos de hardware e software foi possível iniciar o
processo de treinamento da rede neural. Existiram dificuldades para estabelecer uma forma de
treinar o sistema. Se fosse montada uma base de notas musicais, em que fosse inserido na base
nota a nota, certamente o tempo de testes teria que ser dobrado. Para solucionar o problema um
ajudante teria que ser necessário. Algo que era inviável no momento da fase de testes. Foi
utilizado então o cálculo da variância, que possibilitou a separação das notas musicais
automaticamente. O cálculo estatístico além de solucionar o problema da quantidade de
amostras, fez com que uma base de testes pudesse ser construída por hora se necessário. A fase
de testes foi então agilizada. Foi possível testar várias configurações da rede neural.
Surgiu então outro problema, a rede neural não estava conseguindo uma taxa de acerto
significativa. Busquei então informações com o orientador do projeto que sugeriu realizar o
cálculo estatístico da correlação entre as amostras.
A correlação estatística fez perceber que a FFT não continha informações em relação ao
timbre musical. Basta analisar as notas “G – 4” e “B – 0” através da FFT. A correlação entre as
duas notas era extremamente alta, o que levou a decisão de cortar uma dessas notas do
reconhecimento. Com a correlação outras notas tiveram problemas e também foram cortadas do
reconhecimento. As notas foram cortadas, pois não havia mais tempo para a investigação do
problema. Utilizando a metodologia de excluir notas com alta correlação a rede neural obteve
êxito no treinamento de todas as notas. Foi possível identificar a técnica solo e transcrever as
notas reconhecidas em forma de tablatura.
Existem diversas melhorias que ainda podem ser feitas no projeto. O hardware utilizado
poderia ser concentrado em um DSP (Digital Signal Processor). O DSP certamente melhoraria a
performance do hardware fazendo com que mais notas pudessem ser reconhecidas em um
intervalo curto de tempo. O software poderia buscar informações da quantidade de notas tocada
analisando o princípio ADSR ( Ataque, Decaimento, Sustentação e Relaxamento). Outra
melhoria importante no software, seria utilizar além da FFT, outros métodos de inteligência
artificial que consigam resolver o problema do timbre musical.
64
Muitos esforços ainda serão dispensados em testes e pesquisas sobre o reconhecimento de
áudio e timbre musical. Este trabalho é uma humilde contribuição, apenas para sinalizar um
caminho ou mostrar outros caminhos que podem ser percorridos para o sucesso completo do
projeto.
65
CAPÍTULO 7 – REFERÊNCIAS BIBLIOGRÁFICAS
1 - Livros Halliday Resnick Walker - Funfamentos de Física Gravitação, Ondas e Termodinâmica Paulo Sergio R.D, Eduardo A.B.S, Sérgio Lima Netto - Processamento Digital de Sinais – Projeto e Análise de Sistemas Francisco Estevam Martins de Oliveira – Estatística e Probabilidade Fábio Pereira – Microcontroladores PIC Programação em C 2 – Periódico Dígitro Tecnologia. Glossário Tecnológico. Coordenação Eng. Juliano Anderson Pacheco, desenvolvida por Adm. Claudio Brancher Kerber, apresenta termos tecnológicos na área de telecomunicações. Disponível em: <http://www.digitro.com/glossario_digitro.php>. Acesso em: 07 dezembro 2007 3 - Artigo de Periódico E. M. Miletto, L. L. Costalonga, L. V. Flores, E. F. Fritsch, M. S. Pimenta e R. M. Vicari Instituto de Informática - Laboratório de Computação & Música Universidade Federal do Rio Grande do Sul Disponível em: < http://www.inf.ufrgs.br/lcm/web/textos/aula1/CMintro2.pdf> 4 – Monografia, Teste Cristiano Nogueira dos Santos – Representação Espectral de Sinais Para Transcrição Musical Automática. Tese (Graduação). Rio de Janeiro. Universidade Federal do Rio de Janeiro 2004. Lílian Franco. Brito de Luca. Controle On-Off de Dispositivos Eletrônicos através do reconhecimento de voz. Monografia (Graduação) Curitiba. UNICENP 2002. 5 - Internet Informações sobre componentes eletrônicos utilizados Disponível em: <http://www.texasinstruments.com/> Material de Reconhecimento de FALA baseado em diversos autores: Disponível em: <http://www.eps.ufsc.br/disserta96/tafner/index/index.htm#sum> Timbre sonoro e Análise de Fourier <http://www.cefetba.br/fisica/NFL/fge2/praticas/timbreCoolEdit.html> Acessado em 01/12/2007