Sunteți pe pagina 1din 41

UNIVERSIDADE FEDERAL DE PERNAMBUCO

GRADUAO EM CINCIA DA COMPUTAO


CENTRO DE INFORMTICA
2004.2

ANLISE HARMNICA FUNCIONAL AUTOMTICA


_______________________________________________

TRABALHO DE GRADUAO
EM INTELIGNCIA ARTIFICIAL

Aluno: Ricardo Enrique Pereira Scholz


Orientador: Geber Lisboa Ramalho

Anlise Harmnica Funcional Automtica


Recife, 02 de maro de 2005.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

Anlise Harmnica Funcional Automtica


Agradecimentos
A minha me, pai e irmo, pelo apoio e incentivo em todas as minhas
caminhadas, sejam elas quais forem.
A Dani, que nos ltimos quatro anos esteve ao meu lado, nos melhores
momentos da minha vida e nos mais difceis tambm.
Aos meus amigos, pelo apoio, pelos conselhos, pelas alegrias divididas e
experincias vividas, e com quem eu aprendi e aprendo at hoje.
A Bel Zanforlin e Sylvio Pessoa, pela ateno que tiveram em ceder
seus trabalhos, colocando-se disposio para qualquer dvida minha na
utilizao dos mesmos.
Aos professores do Centro de Informtica, por todo conhecimento passado e
aos funcionrios pela infra-estrutura proporcionada.
Aos professores do Concervatrio Pernambucano de Msica, particularmente a
Leonardo Saldanha, meu professor de piano, pela grande importncia e
influncia na minha formao musical.
A Geber, em especial, por todo conhecimento e experincia compartilhados,
alm da importncia na formao intelectual que busco.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

Anlise Harmnica Funcional Automtica

Resumo
A

realizao

de

diversas

tarefas

na

msica

ocidental,

como

improvisao, re-harmonizao e arranjo, entre outras, necessita de um passo


preliminar denominado anlise harmnica funcional. Esta anlise consiste na
determinao do papel (funo) de cada acorde de uma grade de acordes
(harmonia), levando-se em considerao o contexto no qual cada acorde est
inserido, ou seja, os acordes que o precedem e os que o sucedem.
A objetivo deste trabalho de graduao realizar um estudo das
tcnicas aplicveis ao problema e apresentar um framework para realizao da
anlise harmnica funcional automtica. Para tanto, estudamos as abordagens
existentes, retomando uma delas para estend-la s inmeras variantes de
seqncias de acordes e correo a posteriori da harmonia analisada.
O processo se divide em duas fases, a anlise e o ps-processamento,
ambas fazendo uso de um motor de inferncia, o JEOPS [FIG01], e quatro
bases de regras, trs para a fase de anlise e uma para a fase de psprocessamento. A fase de anlise se divide em trs etapas: identificao de
seqncias de funes pr-definidas, eliminao de seqncias sobrepostas e,
por fim, atribuio de funo aos acordes que no foram inseridos
anteriormente em nenhuma seqncia. J a fase de ps-processamento
responsvel pela correo do nome das notas, a fim de manter a anlise
realizada conceitualmente consistente.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

Anlise Harmnica Funcional Automtica

ndice

1. Introduo.......................................................................................................6
2. Contexto...........................................................................................................8
2.1 Conceitos.................................................................................................................8
2.2 O Problema..........................................................................................................10
3. Estado da Arte...............................................................................................12
4. Automao da Anlise Harmnica Funcional...........................................14
4.1 Encontrando Padres Simples............................................................................14
4.2. Removendo Padres Sobrepostos......................................................................17
4.3. Classificando Acordes Ainda No Classificados..............................................21
4.4. Correo da nomenclatura dos acordes...........................................................25
5. Implementao..............................................................................................29
5.1 O Parser................................................................................................................31
5.2 Gerenciador de Arquivos....................................................................................31
5.3 Analisador............................................................................................................32
5.4 Validador..............................................................................................................33
5.5 Interface Grfica..................................................................................................33
6. Resultados obtidos.......................................................................................37
7. Concluses e Trabalhos Futuros................................................................38
8. Referncias....................................................................................................40
9. Datas e Assinaturas.....................................................................................41

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

Anlise Harmnica Funcional Automtica

1. Introduo
Na msica ocidental, a realizao de diversas tarefas como, por
exemplo, re-harmonizao, arranjo ou improvisao exige como passo
intermedirio a anlise harmnica funcional. Sendo assim, a automao de
tal anlise facilitaria bastante a automao destas outras tarefas, bem como
seria til a msicos que realizam estas tarefas manualmente.
A anlise harmnica funcional consiste na atribuio de funes a cada
acorde de uma grade de acordes. Assim, possvel inferir qual o sentido de
um determinado acorde, ou seja, qual a inteno do compositor ao utilizar
aquele acorde no contexto onde foi utilizado.
Este trabalho tem como objetivo propor um framework para automao
da anlise harmnica funcional, permitindo, a partir de uma grade de
acordes, acompanhada ou no de uma letra de msica, gerar uma estrutura
mais completa que contm tambm a informao dos graus (ou funes) de
cada acorde e a tonalidade de cada trecho.
A tcnica utilizada tem por base a proposta de Pachet [PAC01], porm
com algumas alteraes. O processo sugerido utiliza um motor de
inferncia baseado em regras, o JEOPS [FIG01], nas duas fases em que
dividido, e foi implementado utilizando um framework musical em Java, o
Ritornello [SER01]. A primeira fase, chamada fase de anlise, divide-se em
trs etapas. A segunda fase, o ps-processamento, tem por objetivo tornar
a grade de acordes conceitualmente consistente em etapa nica.
Na fase de anlise, a etapa inicial consiste na identificao de
seqncias de funes utilizadas com certa freqncia e fceis de
identificar sem causar ambigidades. Uma vez identificadas estas
seqncias, que chamaremos de chunks, o segundo passo responsvel
por eliminar os chunks redundantes ou menos relevantes, de maneira a no
permitir a sobreposio de dois chunks. Por fim, a terceira etapa atribui
funes aos acordes que no esto associados a nenhum chunk, os
chamados gaps, inserindo-os nos chunks vizinhos.
O ps-processamento responsvel pela correo dos nomes das
notas, a fim de manter a consistncia da msica aps a anlise. Esta

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

Anlise Harmnica Funcional Automtica


correo no modifica o acorde usado, apenas o substitui por acordes
enarmnicos, ou seja, as mudanas so apenas conceituais.
O framework criado inclui ainda uma interface grfica que recebe como
entrada um texto, como por exemplo uma cifra da web, e realiza a anlise
harmnica, mostrando o resultado encontrado e permitindo que seja editado
pelo usurio.
No prximo captulo alguns termos utilizados e conceitos necessrios ao
bom entendimento deste trabalho sero explicados. Alm disso, o problema
da automao da anlise harmnica funcional ser descrito em mais
detalhes. Em seguida, as tcnicas at ento propostas para resolver o
problema sero apresentadas. O quarto captulo explica as fases de anlise
e ps-processamento, mostrando como ocorrem e que tipo de regras so
utilizadas em cada etapa. A maneira como o framework foi modelado e
implementado exposta no quinto captulo. Em seguida, os resultados
obtidos e a maneira como foram calculados so explicados. E por fim, no
stimo captulo, tem-se uma breve concluso, analisando as dificuldades
encontradas e os possveis trabalhos futuros.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

Anlise Harmnica Funcional Automtica

2. Contexto
Nesta sesso, sero apresentados alguns conceitos relacionados com o
problema discutido neste trabalho. Em seguida, a anlise harmnica
funcional ser descrita enquanto tarefa, juntamente com uma anlise das
principais dificuldades computacionais existentes em sua automao.
2.1 Conceitos
Os principais conceitos necessrios ao bom entendimento deste trabalho
so: enarmonia, campo harmnico, funo dos acordes e emprstimo
modal.
O conceito de enarmonia simples: duas notas so enarmnicas
quando tm o mesmo som (mesma freqncia de vibrao), porm nomes
diferentes. Exemplos de notas enarmnicas so: d bemol e si, ou f
sustenido e sol bemol.

Figura 2.1 Exemplos de notas enarmnicas. Em cada compasso, ambas as


notas tm o mesmo som, embora sejam, conceitualmente, notas diferentes.

Grosso modo, o campo harmnico de uma determinada nota o


conjunto de acordes gerados a partir de uma escala cuja tnica a nota em
questo. Por exemplo, se a nota considerada for d e a escala escolhida for
a escala maior, teremos o que se segue:

Figura 2.2 Escala de D Maior.

Com base nisso, formando os acordes com as notas da escala, a partir


de teras sobrepostas, obtemos os seguintes acordes, que formam o
campo harmnico de d maior.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

Anlise Harmnica Funcional Automtica

C7M Dm7 Em7 F7M

G7

Am7 Bm7(b5)

Figura 2.3 Campo harmnico de D Maior

Em um dado campo harmnico, cada acorde tem uma funo, ou grau.


Estes graus so relativos tnica do campo harmnico, e vo do primeiro
ao stimo. A um conjunto de funes de acordes consecutivos, num mesmo
campo harmnico, chamaremos de chunk.

Figura 2.4 Exemplos de chunks. (a) Chunk II-V-I da tonalidade Bb. (b) Chunk
bVI-V-subV-Im da tonalidade Cm.

O objetivo da anlise harmnica funcional exatamente descobrir os


campos harmnicos de cada trecho da msica e os graus de cada acorde
destes campos.

I7M IIm7 IIIm7 IV7M V7 VIm7 VIIm7(b5)


C7M Dm7 Em7 F7M

G7

Am7 Bm7(b5)

Figura 2.5 Campo harmnico de D Maior com respectivas funes dos


acordes.

Quando um determinado trecho, em um dado campo harmnico, utiliza


um acorde pertencente ao campo harmnico de outra tonalidade cuja tnica
a mesma do campo harmnico em questo, i. e., apenas o modo
diferente, diz-se que ocorreu um emprstimo modal. Considere o exemplo
abaixo.
bVI7+ V7

I7M

Ab7+ G7

C7M

Figura 2.5 Emprstimo modal. O Ab7+ um emprstimo modal de C menor


harmnico.

O campo harmnico do trecho G7 C7M C maior. Entretanto, o Ab 7+


pertence ao campo harmnico de C menor harmnico. Ou seja, a tnica de
Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

Anlise Harmnica Funcional Automtica


ampos os campos harmnicos a mesma, neste caso C, embora os modos
sejam diferentes. Sendo assim, diz-se que o Ab 7+ um emprstimo modal
de C menor harmnico.
2.2 O Problema
Como j foi dito, a anlise harmnica funcional consiste na atribuio de
funes, ou graus, aos acordes de uma msica. Tal tarefa deve levar em
considerao o contexto em que cada acorde est inserido, ou seja, os
acordes anteriores e posteriores ao acorde em questo.
Cada trecho da msica tem uma tonalidade, que gera um campo
harmnico. Sendo assim, os acordes dentro do trecho em questo tm
alguma relao com a tnica da tonalidade deste trecho. Esta relao
justamente a funo do acorde. Logo, toda funo s faz sentido dentro de
um campo harmnico. A anlise harmnica funcional consiste em descobrir
como uma msica se divide em campos harmnicos e a funo de cada
acorde em seus respectivos campos harmnicos.
A anlise harmnica funcional no trivial nem para os seres humanos
por lidar com uma linguagem cuja gramtica sensvel ao contexto, embora
msicos experientes a faam com naturalidade. Por exemplo, no caso da
figura 2.5, desconsiderando-se o contexto, o Ab 7+ poderia ser I7+ de Ab, VI7+
de Cm, IV7+ de Eb, III7+ de Fm, etc. O contexto considerado pode ir alm do
acorde vizinho, sendo necessrio, em alguns casos raros, analisar a msica
inteira para determinar a funo de um dado acorde. Cada msico tem sua
prpria maneira, na maioria das vezes muito subjetiva, de inferir os campos
harmnicos e o papel dos acordes numa msica. Entretanto, apesar da
subjetividade dos mtodos, os resultados so, quase sempre, bastante
parecidos, quando no iguais.
Sendo assim, a automao desta tarefa um problema no trivial, dado
que trata-se de uma atividade que exige bastante conhecimento
especialista. A forma de modelar o conhecimento, a existncia de situaes
ambguas ou mais de uma possibilidade de anlise para um mesmo trecho
e a inexistncia de regras formais para realizar a tarefa tornam o problema
ainda mais complexo.
Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

10

Anlise Harmnica Funcional Automtica


Portanto, um sistema ou framework que se proponha a realizar anlise
harmnica funcional deve ter como principais caractersticas a abrangncia,
ou seja, o sistema deve conseguir analisar muitos tipos de seqncias; a
corretude, sendo prefervel que acordes da seqncia fiquem sem funo
atribuda a terem funes incorretas, embora as funes no ideais
funes no utilizadas com freqncia pelos especialistas possam ser
usadas; a extensibilidade, isto , a melhoria incremental do sistema deve
ser fcil; uma interface grfica adequada, preferencialmente permitindo que
o resultado da anlise seja modificado pelo usurio e recebendo como
entrada um formato simples, como texto, facilitando que cifras da web, por
exemplo, sejam utilizadas como entrada.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

11

Anlise Harmnica Funcional Automtica

3. Estado da Arte
A automao da anlise harmnica funcional j foi objeto de estudo em
diversas pesquisas, embora mais como meio que como fim. Veremos que a
grande maioria dos estudos que envolvem automao da anlise harmnica
funcional o fazem como tarefa intermediria, e por este motivo a tratam de
maneira superficial. Alm disso, os dados de entrada utilizados costumam
ser bastante especficos para cada problema.
As tcnicas utilizadas so as mais diversas. Em Ulrich [ULR01], por
exemplo, uma msica modelada como uma srie de acordes, onde cada
acorde composto por um conjunto de notas, podendo um determinado
conjunto de notas representar mais de um acorde. Os acordes so
reconhecidos atravs de uma gramtica livre de contexto. Em seguida, os
campos harmnicos so identificados iterativamente: inicialmente, cada
acorde um campo harmnico, e a cada passo, dois campos adjacentes
so combinados, se os acordes de ambos puderem ser analisados sob o
mesmo campo harmnico. J em Giomi e Ligabue [GIO01], trata-se
essencialmente da composio de seqncias harmnicas atravs de uma
estrutura em rvore, de carter derivacional, que sintetiza, compasso-acompasso, as vrias solues, juntamente com as probabilidades de
incidncia de cada acorde. A vore definida gera seqncias derivadas do
Blues.
Estas abordagens no foram utilizadas neste trabalho por considerar
entradas em formatos muito especficos, que no seriam encontradas com
facilidade, e tratar o processo de anlise harmnica funcional como um
meio para uma outra tarefa, na maioria das vezes, composio automtica,
ocasionando em anlises no abrangentes, suficientes apenas para a
realizao das tarefas desejadas. Alm disso, as abordagens no so
facilmente extensveis, dificultando a melhoria incremental da anlise
realizada.
Em particular, duas das referncias encontradas tratam do problema de
maneira mais especfica e numa abordagem mais aprofundada. A primeira
baseia-se na definio de uma gramtica capaz de gerar seqncias

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

12

Anlise Harmnica Funcional Automtica


harmnicas jazzsticas e proposta por Steedman [STE01]. A idia
principal consiste no uso de regras para definir uma gramtica capaz de
reconhecer seqncias de acordes numa hamonia jazzstica. A definio da
gramtica incremental, i. e., a priori, a gramtica bastante simples. Aps
a aplicao de todas as regras de derivao, chega-se ento uma
gramtica mais completa, capaz de reconhecer seqncias de acordes
mais complicadas. Tal abordagem no foi escolhida para o problema em
questo neste trabalho, principalmente pela dificuldade em definir tal
gramtica. Alm disso, casos muito particulares no seriam analisados, j
que provavelmente ficariam de fora da gramtica definida, visto que seria
necessrio balancear a complexidade da gramtica e a qualidade do
resultado.
A segunda referncia, Pachet [PAC01], prope uma anlise em trs
etapas: busca de padres recorrentes, eliminao de padres conflitantes e
classificao de gaps, nesta ordem. Todas as etapas usam uma base de
regras e um motor de inferncia. O primeiro passo consiste em definir
regras para reconhecer padres muito usados na harmonia jazzstica. Uma
vez identificados estes padres, regras para eliminar padres sobrepostos
e/ou redundantes so definidas, a fim de que cada acorde tenha somente
uma funo atribuda. Por fim, so definidas regras para classificar os
acordes que restam aps o segundo passo da anlise.
Aps analisar as abordagens utilizadas nestes trabalhos, escolheu-se
esta ltima por melhor se adequar s necessidades deste trabalho de
graduao. Alm da facilidade de modificao das regras, permitindo o
aperfeioamento da anlise, a extenso da idia a fim de incluir novas
tarefas alm da anlise harmnica funcional, atravs da incluso de novas
etapas no processo, aps a etapa de classificao dos gaps, torna-se
simples, bastando definir regras adequadas para tal.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

13

Anlise Harmnica Funcional Automtica

4. Automao da Anlise Harmnica Funcional


A seguir, o processo utilizado para automatizar a anlise harmnica
funcional ser explicado em maiores detalhes. Cada uma das etapas da
anlise ser discutida e exemplificada, bem como a etapa nica do psprocessamento.
A msica que se deseja analisar passa por um pr-processamento, onde
so identificados os acordes e a letra, se esta existir. gerado ento um
objeto composto por uma letra, contendo todos os meta dados necessrios,
como a posio dos acordes em relao a ela, uma lista de acordes,
contendo todos os acordes da msica em questo, ordenadamente, e uma
lista de chunks, a princpio vazia.
4.1 Encontrando Padres Simples
A primeira etapa do processo proposto a busca por padres simples,
recorrentes e que no causem ambigidades. Para tal, usa-se uma base
contendo dezessete regras, uma para cada padro pr-definido. O motor de
inferncia tenta aplicar as regras a todas as combinaes possveis de
acordes.
A maioria das regras desta base foi adaptada de Ramalho [RAM01]. As
demais foram criadas a partir do resultado da anlise manual de diversas
msicas com harmonia jazzstica, de compositores como Tom Jobim,
Baden Powel, Cartola, Vincius de Moraes, George Benson, Louis
Armstrong, Herbie Hancok, Miles Davis, entre outros, observando os
padres que ocorriam com freqncia, mas tomando-se o cuidado para no
criar regras ambguas. Alm disso, cadncias e trechos muito utilizados em
Chediak [CHE01] foram considerados.
Aps a criao de uma nova regra, esta era testada com vrias msicas
antes de ser definitivamente incorporada base de regras. A insero de
novas regras na primeira base requer bastante cuidado, j que as
redundncias e sobreposies geradas pela nova regra tero de ser
tratadas pela segunda base de regras, implicando na mudana, excluso ou
insero de regras nesta ltima.
Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

14

Anlise Harmnica Funcional Automtica


As regras se aplicam a seqncias de acordes consecutivos. Uma vez
que uma regra disparada para um conjunto de acordes, criado um novo
chunk que preenchido com as funes dos acordes em questo. Este
chunk ento inserido na lista de chunks, como no exemplo a seguir.
regra II-V Maior {
declaraes
c1 e c2 so acordes da base de conhecimento;
condies
c1 precede c2;
c1 menor e tem stima menor, caso a tenha;
c2 dominante;
O intervalo entre as tnicas de c1 e c2 tem
dois tons e meio;
aes
Crie um novo chunk c, cuja tonalidade
maior e uma quarta justa acima da tnica
de c2;
Insira a funo IIm7 no chunk c;
Insira a funo V7 no chunk c;
Insira c na base de conhecimento;
}
O arquivo de regras utilizado est no anexo A1. Os chunks identificados
pelas regras desta base so os da Tabela 4.1 a seguir.
Chunks da Tonalidade Menor
Harmnica
bII7 Im
IVm7 Im
IIm7(b5) bII7 Im
V7 Im7M
VII Im7M
IIm7(b5) V7
IIm7(b5) V7 Im7M
bVI7M IIm7(b5) V7 Im7M
Ivm7 bIII7M(#5) bVI7M IIm7(b5) V7 Im7M

Chunks da Tonalidade Maior


V7 I7M
IIm7 V7
bII7 I7M
IV7M I7M
IIm7 V7 I7M
IIm7 bII7 I7M
Vim7 IIm7 V7 I7M
7M
IV IIIm7 VIm7 IIm7 V7 I

Tabela 4.1 Chunks identificados pela primeira base de regras (Match Chunks Base).

No h ordem de prioridade entre as regras, i. e., para um conjunto de


acordes, se duas regras distintas se aplicam, ambas sero disparadas. Por
isso, h o cuidado em no definir regras que causem ambigidades, ou
seja, que permitam o disparo concomitante com outras regras para o
mesmo conjunto de acordes. A maneira escolhida para resolver este
problema foi no definir as regras ambguas e tratar o caso no terceiro

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

15

Anlise Harmnica Funcional Automtica


passo da anlise. Embora este problema possa ser tambm resolvido com
a insero de regras na segunda base que escolhem determinado chunk,
de acordo com o contexto em que est inserido.
O problema acima ocorreria, por exemplo, com as regras para identificar
uma cadncia deceptiva (V7 VIm7 na tonalidade maior) e uma cadncia
do tipo bVII7 Im, na tonalidade menor. A priori, impossvel definir se
uma seqncia de acordes como G7 Am tem as funes V7 VIm em d
maior ou bVII7 Im em l menor.
Entretanto, considerando o contexto em que a seqncia est inserida,
possvel tal classificao. Se, por exemplo, o contexto F 7M Em7 Am7 Dm7
G7 Am, sabe-se que o campo harmnico em questo de d maior (com
as respectivas funes IV7M IIIm7 VIm7 IIm7 V7 VIm, logo, trata-se de uma
cadncia deceptiva. J num contexto como Dm7 Bm7(b5) G7 Am,
possvel inferir que trata-se das seguintes funes IVm7 IIm7(b5) bVII7 Im,
no campo harmnico de l menor.
J a estratgia adotada resolve o problema sem identificar as funes
destes acordes no primeiro passo de anlise, deixando-os como gaps e
resolvendo suas funes na terceira etapa da anlise, depois que o
contexto j foi analisado. Ou seja, o Am classificado com base no campo
harmnico do chunk anterior.
A figura abaixo mostra como a terceira etapa de anlise consegue
resolver o problema. esquerda, a harmonia sem a identificao do chunk
V7 VIm7 e direita, o resultado da anlise aps a etapa de classificao
dos gaps.

Figura 4.1.2 Resolvendo ambigidade na terceira etapa de anlise.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

16

Anlise Harmnica Funcional Automtica


Nota-se que, desta maneira, a lista de chunks identificados nesta fase ir
conter diversos chunks redundantes, como no exemplo da Figura 4.1.3. No
entanto, esta redundncia se faz necessria para que a segunda etapa da
anlise consiga eliminar chunks de menor prioridade, sem perder
informaes sobre as outras funes do chunk eliminado. No exemplo
abaixo, se o chunk verde fosse eliminado na segunda fase da anlise, para
que o Am7 fosse inserido em outro chunk, a informao sobre as funes
dos outros acordes continuaria existindo nos chunks vermelho, azul e
mostarda.

Figura 4.1.3 Chunks encontrados pela primeira base de regras. Os chunks


vermelho, mustarda e azul so redundantes.

4.2. Removendo Padres Sobrepostos


A lista de chunks obtida aps a primeira etapa da anlise pode conter
chunks sobrepostos, dada a maneira como o motor de inferncia tenta
aplicar as regras da primeira base. A segunda etapa da anlise tem por
objetivo gerar uma lista de chunks sem sobreposies, i. e., eliminar chunks
de maneira que, ao final da etapa, a lista de chunks no contenha mais que
uma funo para cada acorde da msica. Para isso, as regras definidas
retiram da base chunks considerados de menor prioridade ou redundantes.
As quatorze regras desta base foram definidas a partir das possveis
sobreposies de chunks geradas pela primeira base. O arquivo de regras
utilizado est no anexo A2. Numa anlise mais detalhada, percebe-se que
as sobreposies possveis podem ser de dois tipos: totais ou seja, um
chunk est totalmente imerso em outro ou parciais com apenas uma
funo em comum isto , a ltima funo do primeiro chunk coincide com
a primeira funo do segundo chunk.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

17

Anlise Harmnica Funcional Automtica

Figura 4.2.1 Sobreposio total (a) e sobreposio parcial (b).

Como j foi dito, as sobreposies so resolvidas atravs de dois tipos


de regras: regras de eliminao de chunks de menor prioridade e regras de
eliminao de chunks redundantes. A base de regras desta fase
prioritria, ou seja, uma vez que, para um determinado conjunto de objetos,
uma regra disparou, nenhuma outra regra ir disparar para os mesmos
objetos. A regra disparada ser sempre a que houver sido definida primeiro
no arquivo de regras. Na tabela abaixo esto as regras definidas nesta base
e os chunks eliminados por cada uma. As regras do tipo Sobreposio A
B significam uma sobreposio parcial em que o primeiro chunk termina
com a funo A e o segundo chunk comea com a funo B.
Regra
1. Sobreposio Im VIm7
2. Sobreposio Im IIm7
3. Sobreposio Im IVm7
4. Sobreposio Im Vm7
5. Sobreposio Vm7 VIm7
6. Sobreposio Vm7 IIm7
7. Sobreposio Vm7 IVm7
8. Sobreposio V7 bII7
9. Sobreposio V7 V7
10. Sobreposio I V7
11. Sobreposio I bII7
12. Sobreposio I IV7M
13. Sobreposio I bVI7M

Exemplo
A. (...) Im
B.
VIm7 ()
A. (...) Im
B.
IIm7 (...)
A. (...) Im
B.
Ivm7 (...)
A. (...) Im
B.
Vm7 (...)
A. (...) Vm7
B.
VIm7 (...)
A. (...) Vm7
B.
IIm7 (...)
A. (...) Vm7
B.
IVm7 (...)
A. (...) V7
B.
bII7 (...)
A. (...) V7
B.
V7 (...)
A. (...) I
B.
V7 (...)
A. (...) I
B.
bII7 (...)
A. (...) I
B.
IV7M (...)
A. (...) I
B.

bVI7M (...)

Chunk Eliminado
A
A
A
A
B
B
B
A
A
A
A
B
B

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

18

Anlise Harmnica Funcional Automtica


A.

14. Imerso

Y Z

B. X Y Z W

Tabela 4.2 Regras da segunda base (Resolve Conflicts Base).

4.2.1. Eliminando Chunks de Menor Prioridade


As treze primeiras regras do arquivo de regras utilizado tm como
finalidade eliminar chunks de menor prioridade. Estas regras resolvem os
casos de sobreposio parcial, simplesmente eliminando um dos dois
chunks em questo, como no exemplo que se segue. Considere os dois
chunks da figura abaixo:

Figura 4.2.2 Sobreposio parcial de chunks.

Percebe-se que o acorde Am tem duas funes possveis. Em muitos


casos, um determinado acorde pode ter mais de uma funo, entretanto, na
prtica, elege-se apenas uma das funes possveis, a fim de simplificar a
notao. Sendo assim, a regra disparada seria a seguinte.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

19

Anlise Harmnica Funcional Automtica

regra Im Vs VIm {
declaraes
c1 e c2 so chunks da base de conhecimento;
condies
O primeiro acorde de c2 o ltimo de c1;
O ultimo acorde de c1 tem funo Im;
O primeiro acorde de c2 tem funo VIm;
aes
retire c1 da base de conhecimento;
}

Neste caso, o chunk de menor prioridade o primeiro V7 Im que


ento eliminado da base. Observe que, na Figura 4.2.2, os chunks c1 e c2
declarados na regra acima so azul e verde, respectivamente.

Figura 4.2.3 (a) Estado inicial da base de conhecimento antes da segunda


etapa da anlise, e (b) estado da base aps a aplicao da regra Im Vs VIm,
que eliminou o chunk V7 Im.

4.2.2. Eliminando Chunks Redundantes


A ltima regra do arquivo de regras, e por conseguinte a de menor
prioridade, disparada somente quando a aplicao de nenhuma das outras
regras possvel, trata os casos de sobreposio total, ou seja,
redundncia.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

20

Anlise Harmnica Funcional Automtica


O funcionamento desta regra simples. Dados dois chunks, se um est
totalmente imerso em outro, este eliminado. O exemplo abaixo mostra o
funcionamento da regra.

Figura 4.2.4 (a) Estado inicial da base de conhecimento antes da segunda


etapa de anlise e (b) estado da base de conhecimento aps a aplicao da
regra de eliminao de chunks redundantes.

Nota-se que o chunk IIm7 V7 (azul) redundante, visto que identifica


funes j identificadas pelo chunk VIm7 IIm7 V7 I7M (vermelho), e est
totalmente imerso neste ltimo. Sendo assim, eliminado da base.
4.3. Classificando Acordes Ainda No Classificados
Por fim, a terceira etapa da anlise tem por objetivo classificar os
acordes at ento no classificados, i. e., identificar a funo dos acordes
que no esto inseridos em qualquer chunk. Para isso, a base de regras
desta etapa contm vinte e oito regras, divididas em 8 grupos, conforme a
tabela abaixo. As regras so aplicveis a qualquer acorde que no faa
parte de nenhum chunk.
Grupo
1. Igual.

2. Campo harmnico dos


chunks vizinhos.

3. Campo harmnico dos


acordes vizinhos.

Regra
Igual ao acorde posterior.
Igual ao acorde anterior.
Campo harmnico maior do prximo chunk.
Campo harmnico menor harmnico do
prximo chunk.
Campo harmnico menor natural do prximo
chunk.
Campo harmnico maior do chunk anterior.
Campo harmnico menor harmnico do
chunk anterior.
Campo harmnico menor natural do chunk
anterior.
Campo harmnico maior do prximo acorde.
Campo harmnico menor harmnico do
prximo acorde.
Campo harmnico menor natural do

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

21

Anlise Harmnica Funcional Automtica


prximo acorde.
Campo harmnico maior do acorde anterior.
Campo harmnico menor harmnico do
acorde anterior.
Campo harmnico menor natural do acorde
anterior.
Emprstimo modal maior do prximo chunk.
Emprstimo modal menor harmnico do
prximo chunk.
Emprstimo modal menor natural do
prximo chunk.
4. Emprstimo modal dos
chunks vizinhos.
Emprstimo modal maior do chunk anterior.
Emprstimo modal menor harmnico do
chunk anterior.
Emprstimo modal menor natural do chunk
anterior.
5. Sub-dominante dos chunks bII7 do prximo chunk.
vizinhos.
bII7 do chunk anterior.
bII7 do prximo acorde.
6. Sub-dominante dos
acordes vizinhos.
bII7 do acorde anterior.
7. V7 (Dominante)
Dominante
I (tonalidade maior)
8. I (Tnica)
Im7M (tonalidade menor harmnica)
Im7 (tonalidade menor natural)
Tabela 4.3.1 Regras da terceira base (Resolve Gaps Base)

Analogamente segunda base de regras, esta base tambm


prioritria. Isto significa que uma vez disparada uma regra para um acorde
qualquer, nenhuma outra regra o ser para o mesmo acorde. Alm disso, o
motor de inferncia tenta aplicar as regras na ordem em que foram
definidas na base. O arquivo de regras utilizado est no anexo A3.
Inicialmente, tenta-se classificar os gaps em que um dos vizinhos,
posterior ou anterior, o mesmo acorde. Desta maneira, o gap ter a
mesma funo que o acorde vizinho em questo, ou seja, ser inserido no
chunk do acorde vizinho com a mesma funo deste ltimo, como no
exemplo da Figura 4.3.1 abaixo.

Figura 4.3.1 Classificao de gap por igualdade com acorde vizinho. Estado
da base de conhecimento antes (a) e depois (b) da aplicao da regra.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

22

Anlise Harmnica Funcional Automtica


Se no for possvel a aplicao da regra anterior, o campo harmnico
dos chunks vizinhos analisado e, caso o gap pertena a este campo
harmnico, inserido no chunk, com sua funo no campo harmnico em
questo. A Figura 4.3.2 mostra um exemplo da aplicao desta regra.
Observa-se que o Em 7 pertence ao campo harmnico de C maior com a
funo IIIm7.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

23

Anlise Harmnica Funcional Automtica

Figura 4.3.2 Classificao de gap por pertencer ao campo harmnico do


chunk vizinho. Estado da base de conhecimento antes (a) e depois (b) da
aplicao da regra.

No sendo possvel classificar o acorde com base nos campos


harmnicos de nenhum dos chunks vizinhos, os campos harmnicos dos
acordes vizinhos so analisados. Se o gap tiver alguma funo relativa ao
acorde posterior ou anterior, inserido no chunk em que este est inserido,
com a funo relativa ao mesmo, como mostra a Figura 4.3.3. Observa-se
que o Am7 pertence ao campo harmnico de D menor harmnico com a
funo V7.

Figura 4.3.3 Classificao de gap por pertencer ao campo harmnico do


acorde vizinho. Estado da base de conhecimento antes (a) e depois (b) da
aplicao da regra.

Seguindo a ordem de prioridade das regras, a prxima tentativa


classificar o gap como emprstimo modal de um dos chunks vizinhos. Caso
a regra se aplique ao gap, este inserido no chunk com a sua funo na
tonalidade da qual ocorreu o emprstimo. A Figura 4.3.4 exemplifica a
aplicao desta regra. Observa-se que o Dm 7(b5) pertence ao campo
harmnico de C menor harmnico com a funo IIm 7(b5), embora a
tonalidade do chunk vizinho seja C maior.

Figura 4.3.4 Classificao de gap como emprstimo modal do chunk vizinho.


Estado da base de conhecimento antes (a) e depois (b) da aplicao da regra.

O prximo passo a tentativa de classificar o gap como dominante


substituto (funo bII7) de algum dos chunks vizinhos. Esta regra se faz
necessria porque tal funo no identificada em nenhuma das outras
regras at ento definidas. A Figura 4.3.5 exemplifica a aplicao desta
regra.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

24

Anlise Harmnica Funcional Automtica

Figura 4.3.5 Classificao de gap como dominante substituto do chunk


vizinho. Estado da base de conhecimento antes (a) e depois (b) da aplicao da
regra.

Analogamente, no conseguindo classificar o gap como dominante


substituto do chunk vizinho, tenta-se classifica-lo como dominante substituto
do acorde vizinho. O processo semelhante ao da regra anterior, como
mostra a Figura 4.3.6.

Figura 4.3.6 Classificao de gap como dominante substituto do acorde


vizinho. Estado da base de conhecimento antes (a) e depois (b) da aplicao da
regra.

Se nenhuma das tentativas anteriores for aplicvel ao gap, este


classificado com base em sua tera e sua stima. Desta forma, considerase quatro possibilidades. Se o acorde for dominante, i. e., tiver a tera maior
e a stima menor, classificado como V7. Se for maior, classificado como
I7M. Sendo menor, as duas opes so: Im7M, ou seja, primeiro grau da
tonalidade menor harmnica, ou Im7, isto , primeiro grau da tonalidade
menor natural.
4.4. Correo da nomenclatura dos acordes
A fase de ps-processamento tem por objetivo corrigir os nomes dos
acordes, de maneira a tornar a anlise realizada consistente. Esta fase se
faz necessria para que a fase de anlise possa ser mais robusta,
encontrando as funes dos acordes pela relao entre os mesmos, no que
diz respeito quantidade de semitons, abstraindo os nomes das tnicas. A
Figura 4.4.1 mostra um exemplo em que a correo da nomenclatura se faz
necessria.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

25

Anlise Harmnica Funcional Automtica

Figura 4.4.1 Situao da cifra analizada antes da correo da nomenclatura


(a). Observe que impossvel identificar a tonalidade do trecho. direita (b),
uma das opes de correo de nomenclatura dos acordes. Agora a tonalidade
facilmente identificada.

Nota-se que, se o Ebm7 for classificado como IIm7, ento a tonalidade


em questo seria Db ao invs de C# - caso em que o G# 7 e o C#7M teriam
as respectivas funes V7 e I7M. Considerando a tonalidade Db, o V7 seria
um Ab7 ao invs do G#7 e o I7M seria o prprio Db7M ao invs do C#7M. No
entanto, bom que a fase de anlise no diferencie notas enarmnicas,
como o G#7 do Ab7, assim as funes podem ser identificadas mesmo nos
casos em que haja erros deste tipo na grade de acordes.
A base de regras utilizada tambm prioritria e funciona analogamente
s bases da segunda e terceira etapas da fase de anlise. O arquivo de
regras utilizado est no anexo A4. Esta base composta de quatro regras,
sendo a ltima necessria apenas por motivos tcnicos, relacionados
maneira como o framework foi implementado. A Tabela 4.4.1 a seguir,
mostra as regras definidas nesta base.
Regra
Corrige de acordo com o ltimo acorde.
Usa tonalidade preferida.
Usa tonalidade recorrente.
Marca todos os chunks.
Tabela 4.4.1 Regras da Correo de Nomes Dos Acordes (Correct Pitch
Names Base)

Da maneira como as regras esto definidas na base de regras, o


resultado obtido tem a ordem de preferncia que se segue para redefinir a
tonalidade de um chunk. Primeiro, tenta-se usar tonalidades que j
apareceram na msica. Em seguida, uma tabela de transio de
tonalidades usada, onde, dependendo da tonalidade do chunk anterior,
escolhe-se a tonalidade do chunk atual, de maneira a facilitar a execuo
da msica. E por fim, para cada chunk, individualmente, escolhe-se a
tonalidade de acordo com o ltimo acorde do mesmo.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

26

Anlise Harmnica Funcional Automtica


A tentativa de uso de tonalidades que j apareceram na msica
simples. Percorre-se a msica at chegar no chunk atual e caso algum
chunk anterior tenha uma tonalidade igual ou enarmnica do chunk em
questo, este tem sua tonalidade modificada para a tonalidade anterior.
O uso da tabela de transio de tonalidades visa faciliar a leitura e
execuo da msica, evitando grandes mudanas na armadura durante as
trocas de tonalidade e o uso de tonalidades complexas. A tabela funciona
da maneira a seguir.
Existem trs grupos de notas, cada um associado a um conjunto de
notas preferveis. Se a tonalidade do chunk anterior estiver num dado
grupo, usa-se para o chunk atual a tonalidade enarmnica do conjunto de
notas preferveis associado ao grupo em questo. Os trs grupos de notas
so disjuntos e sua unio consiste em todas as notas existentes na msica
ocidental. J os conjuntos de notas preferveis contm exatamente doze
notas cada, sem notas enarmnicas dentro de um mesmo conjunto. A
Tabela 4.4.2 mostra os grupos de notas e seus respectivos conjuntos de
notas preferveis. Esta tabela trata apenas transies de tonalidades
maiores para tonalidades maiores, sendo assim, quando h tonalidades
menores envolvidas, a consulta tabela ocorre utilizando as tonalidades
relativas.
Grupos de Notas
Bx, Ex, Ax, Dx, Gx, Cx, Fx, B#, E#,

Tonalidades Preferveis
C, C#, D, D#, E, F(?), F#, G, G#, A,

A#, D#, G#, C#, F#, B, E, A, D, G

A#, B
C, Db, D, Eb, E, F, F#, G, Ab, A, Bb,

C, F, Bb, Eb, Ab, Db, Gb, Cb, Fb,


Bbb, Ebb, Abb, Ebb, Gbb, Cbb, Fbb

C, Db, D, Eb, E, F, G, Gb, A, Ab, B

Tabela 4.4.2 Tabela de preferncia de tonalidades para transies.

Por fim, a correo da tonalidade do chunk e dos demais acordes com


base no ltimo acorde do chunk apenas uma poltica utilizada, sem
maiores pesquisas a respeito, para manter a consistncia local dos chunks,
caso nenhuma das regras acima possa ser aplicada. O processo assume
que o ltimo acorde do chunk est correto e corrige a tonalidade do chunk e

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

27

Anlise Harmnica Funcional Automtica


os demais acordes baseado neste acorde, conforme exemplificado na
Figura 4.4.2.

Figura 4.4.2 (a) Situao da cifra analizada antes da correo da


nomenclatura. (b) Correo da nomenclatura baseada no ltimo acorde.

No exemplo acima, o B7M foi considerado correto e os outros dois


acordes anteriores, o Dbm7 e o Gb7 foram corrigidos para se adaptar
tonalidade B maior, nas funes IIm7 e V7 respectivamente.
O motor de inferncia aplica as regras da seguinte maneira: primeiro,
todos os chunks tm sua tonalidade corrigida de acordo com o ltimo
acorde. Em seguida, cada chunk, exceto o primeiro, tem sua tonalidade
modificada de acordo com a tonalidade do chunk anterior. Por fim, os
chunks para os quais alguma tonalidade enarmnica j apareceu na msica
tm sua tonalidade substituda pela enarmnica em questo.
Percebe-se que um processo botton-up, ou seja, corrigem-se os
nomes das notas localmente em cada chunk separadamente , para em
seguida considerar um trecho transio entre dois chunks consecutivos
e s ento considerar todo o contexto no uso de tonalidades recorrentes.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

28

Anlise Harmnica Funcional Automtica

5. Implementao
O problema foi modelado sob o paradigma de orientao a objetos e
implementado utilizando a linguagem Java. Dentre os motivos que levaram a
escolha de tal linguagem, o principal o fato do motor de inferncia JEOPS
[FIG01] gerar cdigo Java, alm do framework musical utilizado, o Ritornello
[SER01] tambm ser implementado em Java.
A arquitetura utilizada composta por cinco mdulos: um parser, um
gerenciador de arquivos, um analisador, um validador e uma interface grfica.
Cada mdulo ser descrito em detalhes mais adiante. Os quatro primeiros
mdulos esto associados a uma interface, ou fachada, que torna transparente
ao quinto mdulo interface grfica a implementao dos servios
oferecidos. Estes quatro mdulos, juntamente com a fachada, formam o
framework de anlise harmnica funcional.

Figura 5.1 Arquitetura da implementao.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

29

Figura 5.2 Diagrama de Classes Resumido da Implementao

5.1 O Parser
O mdulo de parsing responsvel por, dado um texto qualquer, identificar
acordes, criando um objeto Music, que formado pelos dados fornecidos como
entrada, porm de maneira estruturada e com todas as meta informaes
necessrias para remontar o texto original.
O parser desenvolvido capaz de reconhecer cifras no padro brasileiro
apenas e foi portado a partir do cdigo fonte utilizado para parsing em Zanforlin
[ZAN01], fornecido pela prpria autora.
Este mdulo contm uma classe Parser, que faz uso de uma classe
Specialist. A classe Specialist responsvel por reconhecer um acorde ou
levantar uma exceo caso o texto passado no seja um acorde.
O algoritmo utilizado, em linhas gerais, simples: o parser quebra o texto em
linhas e em seguida quebra cada linha em palavras. Para cada linha, tenta-se
classificar as palavras como acordes; se em alguma das palavras o especialista
levantar uma exceo, significa que no se trata de uma linha de acordes e sim
de uma linha de texto. Passa-se ento para a prxima linha e repete-se o
processo. Se todas as palavras de uma linha forem classificadas como acordes,
estes so inseridos na lista de acordes e passa-se para a prxima linha. Um fluxo
secundrio de processamento realizado dentro deste algoritmo para salvar
meta-informaes sobre posio de cada acorde em relao ao texto associado
na linha seguinte, entre outras, a fim de permitir a remontagem do texto no final
da anlise.
5.2 Gerenciador de Arquivos
O gerenciador de arquivos o mdulo responsvel por gerar, salvar e
recuperar arquivos nos dois formatos aceitos pelo framework: .mus e .xml. O
primeiro formato, .mus, foi criado especificamente para guardar de maneira
estruturada um objeto Music em um arquivo binario. O framework capaz de ler e
escrever arquivos neste formato. Assim, uma vez analisada, uma msica pode
ser salva em disco e recuperada posteriormente. J no caso do formato .xml, o
framework capaz apenas de gerar o arquivo e salva-lo. Ainda assim, atualmente

no so includas todas as informaes do objeto Music no arquivo .xml, apenas


a grade de acordes e suas funes, os campos harmnicos e as informaes de
tenso e relaxamento na transio de acordes. A letra, quando existe, no
inserida no arquivo XML. A gerao da sada no formato .xml extremamente
importante na utilizao do framework por outras aplicaes, facilitando
enormemente a leitura das msicas analizadas por tratar-se de um formato
adotado largamente hoje em dia.
Este mdulo formado por duas classes, a primeira FileManager
reponsvel pela manipulao apenas de arquivos binrios, encapsulando todo o
cdigo de escrita e leitura dos arquivos .mus. J a segunda classe
XMLGenerator cuida da gerao de arquivos no formato .xml e das rotinas
para salva-los em disco. O mdulo oferece uma interface atravs da classe
IOManager, que unifica os servios das duas classes anteriores, deixando
transparente para os outros mdulos a manipulao de arquivos.
5.3 Analisador
O mdulo de anlise tambm dividido em dois submdulos: anlise e psprocessamento. O primeiro formado por uma nica classe Analyzer ,
juntamente com as classes geradas pelo motor de inferncia JEOPS [FIG01] a
partir dos arquivos de regras criados. A classe Analyzer oferece basicamente
um nico servio, a anlise, que encapsula as trs etapas de anlise, bem como
as chamadas de mtodos das classes geradas pelo motor de inferncia, tornando
transparente a maneira como a anlise realizada.
O submdulo de ps-processamento tambm formado por uma classe nica
PosProcessor , alm da classe gerada pelo motor de inferncia JEOPS
[FIG01], a partir do arquivo de regras definido. Esta classe oferece basicamente
um nico servio, o de ps-processamento, o qual encapsula o cdigo de
chamada aos mtodos da classe gerada pelo motor de inferncia, mantendo a
transparncia sobre o ps-processamento.
Uma interface FullAnalyzer encapsula os servios dos dois
submdulos, alm de permitir a adio de novos submdulos, a fim de oferecer

Anlise Harmnica Funcional Automtica


mais servios fachada, com grande facilidade, bastando criar uma instncia do
referido submdulo e acrescentar seus servios interface do mdulo de anlise.
5.4 Validador
Este mdulo responsvel pela validao dos resultados encontrados. A
classe nica do mdulo StatisticianCalculator capaz de fazer trs
tipos de clculo: a percentagem de acordes no classificados (gaps) em uma
srie de msicas de teste, a percentagem de acordes classificados de maneira
no ideal, considerando a opinio de um especialista, tambm em um conjunto de
testes e, por fim, a percentagem de acordes no classificados pelo especialista
no mesmo conjunto de testes. Para tal, este mdulo utiliza arquivos de teste,
editados por um especialista, com os resultados desejados na anlise de vrias
msicas.
O clculo da quantidade de acordes no classificados trivial: os arquivos de
teste so lidos, suas grades de acordes so analizadas pelo framework e o
nmero de gaps no resultado contado, gerando-se a porcentagem total de
acordes no classificados.
J o clculo da percentagem de acordes classificados de maneira no ideal
ocorre de maneira parecida: os arquivos de teste so lidos, suas grades de
acordes so analizadas pelo framework e o resultado comparado com a anlise
do arquivo lido. Cada funo atribuda diferente da funo do arquivo de teste
computada e a porcentagem total de acordes classificados de maneira no ideal
calculada ao final do processo.
Por fim, o clculo da porcentagem de acordes no classificados pelo
especialista realizado apenas abrindo os arquivos de teste, contando quantos
gaps existem ao todo e dividindo pela quantidade de acordes total.
5.5 Interface Grfica
A interface grfica um mdulo totalmente independente que faz uso do
framework desenvolvido. Esta abordagem trs benefcios na implementao de
uma nova interface grfica, uma das possveis melhorias propostas para este
trabalho no captulo 7. Por tratar-se de um mdulo completamente independente,
importante que a nova interface faa uso dos servios do framework, sem

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

33

Anlise Harmnica Funcional Automtica


importar como estes esto implementados abaixo dela. A interface grfica
implementada possui as seguintes funcionalidades:
Abrir Arquivo: recupera-se um arquivo binrio, .mus, anteriormente salvo em
disco, permitindo sua vizualizao e/ou edio;
Salvar Arquivo: uma vez analisada, uma msica pode ser salva em disco para
posterior consulta e/ou edio. O formato salvo .mus;
Gerar Arquivo XML: gera e salva em disco um arquivo .xml, para uso por
outras aplicaes, por exemplo.
Analisar Msica: realiza a anlise de uma dada cifra ou grade de acordes
fornecida, mostrando o resultado e permitindo que seja editado;
Analisar Musica Passo-a-passo: permite que a anlise da msica seja
realizada passo-a-passo, mostrando o resultado parcial ao usurio a cada passo
da anlise.
Editar anlise: permite a edio da anlise realizada pelo framework, de
maneira que acordes no analisados ou no analisados da maneira ideal possam
ser corrigidos pelo prprio usurio. Esta funcionalidade extremamente til na
gerao do conjunto de testes.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

34

Anlise Harmnica Funcional Automtica

Figura 5.5.1 Tela de entrada de dados. Os dados de entrada do sistema podem


ser uma cifra, por exemplo.

Figura 5.5.2 Tela de anlise parcial. Na anlise passo-a-passo, esta tela mostra
o resultado parcial da anlise at ento realizada. Percebe-se ainda uma grande
quantidade de gaps.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

35

Anlise Harmnica Funcional Automtica

Figura 5.5.3 Tela de resultado da anlise. Aps todas as etapas de anlise e ps


processamento, o resultado mostrado. Nesta tela, as opes Salvar e Gerar
XML so habilitadas no menu Arquivo.

Figura 5.5.4 Tela de edio. Aps o trmino da anlise, o usurio tem a opo de
editar a anlise realizada pelo framwork, bastando corrigir as funes dos acordes
desejados na tabela, escrevendo a nova funo.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

36

Anlise Harmnica Funcional Automtica

6. Resultados obtidos
O framework foi desenvolvido a fim de analisar msicas de harmonia
funcional, excluindo-se o blues, por sua ambigidade. Na msica funcional, o
jazz o estilo de harmonia mais sofisticada, abrangendo tudo que utilizado
em outros estilos de msica funcional, desde o perodo barroco at os dias
atuais. Assim, os testes foram realizados com amostras de msicas cuja
harmonia jazzstica, como o prprio jazz ou a bossa-nova.
A tabela abaixo mostra as porcentagens encontradas utilizando 12 msicas
no conjunto de teste. Considera-se que o msico no um especialista ou
profissional, mas tem conhecimento de harmonia funcional suficiente para
analisar satisfatoriamente boa parte das msicas de harmonia jazzistica.
Quantidade
de Msicas /
Total de acordes

% de Acordes
No Analisados
por um Msico

% de Acordes
No Analisados
pelo Framework

% de Acordes
Analisados
de Maneira
No Ideal

12 / 810

3,52

1,76

9,16

Tabela 6.1 Resultados obtidos pelo mdulo de testes.

Percebe-se que a percentagem de acordes no analisados pelo msico


maior que a percentagem de acordes no analisados pelo framework. Isto
indica que a primeira um subconjunto da segunda, ou seja, parte dos
acordes no analisados pelo framework so os acordes no analisados pelo
msico.
A anlise no-ideal, ou seja, diferente do msico, gera erros em cadeia.
Isto , dado que um determinado acorde foi analisado de maneira no-ideal,
os acordes relacionados a ele podem ser afetados, ampliando o efeito
indesejado e prejudicando o resultado da anlise.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

37

Anlise Harmnica Funcional Automtica

7. Concluses e Trabalhos Futuros


A proposta inicial consistia na construo de um framework para automao
da

anlise

harmnica

funcional,

supondo-se

que

entrada

estivesse

corretamente cifrada, ou seja, os acordes estariam semanticamente e


sintaticamente corretos. O framework de anlise foi construdo, obtendo-se
resultados satisfatrios em relao aos requisitos. Constatou-se que muitas das
entradas encontradas na web no vinham corretamente cifradas quanto sintaxe,
ou seja, aps o trmino da anlise, os nomes dos acordes tornavam-se
inconsistentes conceitualmente. Sendo assim, decidiu-se implementar uma quarta
base de regras, no prevista inicialmente, para identificar trechos inconsistentes e
corrigir os nomes das tnicas dos acordes, substituindo-os por notas
enarmnicas. Alm disso, um editor foi criado, a fim de possibilitar a gerao de
msicas de exemplo com maior facilidade, para o clculo dos percentuais de
acerto.
Uma das maiores dificuldades encontradas foi a definio das regras das
quatro bases de conhecimento, originada pela inexistncia de definies formais
de tais regras na literatura e pela prpria maneira subjetiva com a qual a tarefa
realizada pelos msicos, no explicitando o uso de nenhuma regra. As regras
definidas geraram resultados bastante satisfatrios, tendo em vista os percentuais
de omisso (acordes no classificados) de um humano.
As regras definidas tiveram por base a harmonia jazzstica, por ser esta a
mais sofisticada estrutura harmnica na msica ocidental. Ainda assim, houve
extrema dificuldade em definir regras para identificar estruturas que, embora mais
simples, geram grande ambigidade, como o Blues. No Blues, o campo
harmnico tem trs funes muito utilizadas: I7, IV7 e V7. Assim, localmente, tornase impossvel identificar a diferena entre um I7 IV7 e um V7 I7, por exemplo.
Considere a seqncia C7 F7. Tanto pode tratar-se de um V7 I7 de um blues
em F, quanto de um I7 IV7 de um blues em C.
A definio de uma interface adequada foi um grande desafio. A verso
apresentada neste trabalho no representa a interface desejada para o
framework, sendo uma das possveis melhorias em trabalhos futuros,
principalmente no que diz respeito etapa de edio de msicas j analisadas.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

38

Anlise Harmnica Funcional Automtica


Um fato que ocorre com razovel freqncia em cifras encontradas na web
a troca de acordes por acordes formados pelas mesmas notas, porm com
tnicas diferentes, impossibilitando uma anlise automtica adequada. Um
msico com pouca experincia tambm no consegue identificar este tipo de
problema. o que ocorre com o trecho de As Rosas No Falam, de Cartola, na
figura abaixo, em cifra encontrada na web.
?
V
Dm/B
E7(b9)
...O perfume que roubam de ti, Ai!
Im
Am
Devias vir...

IIm7(b5)
V
Bm7(b5)
E7(b9)
...O perfume que roubam de ti, Ai!
Im
Am
Devias vir...

Figura 7.1 Trecho de As Rosas No Falam (Cartola), disponvel no site


CifraClub (http://cifraclub.terra.com.br/cifras/cifras.php?idcifra=4133, acessado em
26/02/05).

possvel notar que os acordes Dm/B e Bm 7(b5) so formados pelas mesmas


notas (si, r, f e l). Entretanto, no contexto da msica, um Dm/B no teria
sentido, enquanto o Bm 7(b5) faria sentido como IIm7(b5) da tonalidade A menor. No
primeiro caso, o Dm/B poderia ser analisado como IVm6, embora a anlise como
IIm7(b5) seja bem mais coerente.
A correo deste tipo de problema, ou seja, a identificao dos acordes
suspeitos, isto , gaps ou acordes analisados que ficaram com funes estranhas
no contexto e a troca por acordes equivalentes, seria interessante como trabalho
futuro. Uma possvel abordagem consistiria na definio de uma nova base de
regras para, uma vez que a anlise foi terminada, tentar analisar os acordes
suspeitos da mesma maneira como os gaps so analisados, porm trocando-os
por acordes formados pelas mesmas notas.
Este trabalho resultou num framework de anlise harmnica abrangente
sendo capaz de analisar grande parte das seqncias encontradas nas
harmonias jazzsticas , correto no permitindo a atribuio de funes erradas
aos acordes, j que baseado em regras, embora funes no ideais, algumas
vezes sejam usadas e facilmente extensvel bastando apenas mudar os
arquivos de regras e recompilar o cdigo para gerar uma nova verso. Alm
disso, a interface grfica criada facilita a utilizao do framework, permitindo que
cifras da web sejam usadas com facilidade e as anlises realizadas sejam
editadas.
Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

39

Anlise Harmnica Funcional Automtica

8. Referncias
[FIG01]

FIGUEIRA, Carlos S. F.. JEOPS Integrao entre Objetos e


Regras de Produo em Java. Dissertao de Mestrado. 2000. Centro de

[PAC01]

Informtica-UFPE.
PACHET, Franois. A meta-level architecture applied to the analysis of
Jazz chord sequences. Institute Blaise Pascal Laforia. Universit Paris

[SER01]

VI.
SERAPIO, Sylvio P.. Ritornello: um Framework para Representao
do Conhecimento Musical. Dissertao de Mestrado. 2004.

[ULRO1]

Centro de Informtica-UFPE.
ULRICH, John W.. The Analysis And Synthesis Of Jazz By Computer.
Computing and Information Science Department. University of New

[GIO01]

Mexico. Albuqerque, New Mexico.


GIOMI, Francesco e LIGABUE, Marco. Computational Generation and

[STE01]

Study of Jazz Music. 1989.


STEEDMAN, Mark J.. A Generative Grammar for Jazz Chord

[RAM01]

Sequences. 1984. University of Wariwik and University of Edinburgh.


RAMALHO, Geber L.. Construction Dun Agent Rationnel Jouant Du

[CHE01]

Jazz. Tese de Doutorado. 1997. Universite Paris VI.


CHEDIAK, Almir. O Livro do Msico. 4a edio. Lumiar Editora. 1989.

[ZAN01]

182p.
ZANFORLIN, Izabel. Um estudo sobre a personalizao de
encadeamento de acordes para violonistas. Trabalho de Graduao. 2004.

[PAC02]

Centro de Informtica-UFPE.
PACHET, Franois. Computer Analysis of Jazz Chord Sequences: Is

[BAG01]

Solar a Blues?. 1997. SONY CSL-Paris.


BAGGI, Denis L.. NeurSwing: A Connectionist Workbench for the
Investigation of Swing in Afro-American Jazz. 1989. International
Computer Science Institute, Berkeley, CA. XI Computer Corporation, S.
Clemente, CA. Istituto Dalle Molle per Studi sullIntelligenza Artificiale,
Lugano, Switzerland.

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

40

Anlise Harmnica Funcional Automtica

9. Datas e Assinaturas
Recife, maro de 2005,

_____________________________________
Ricardo Enrique Pereira Scholz
Aluno

_____________________________________
Geber Lisboa Ramalho
Orientador

Trabalho de Graduao em Inteligncia Artificial :: Ricardo Scholz :: Maro/2005

41