View
228
Download
0
Category
Preview:
Citation preview
Rameau: Um programa pra análise harmônicaautomática de música tonal
Alexandre Passos
Genos—Grupo de pesquisa de computação muscalUFBA
SEMPPG 2008
Introdução
problema:fazer um programa pra analisar harmonia
interessante:problema abertonão existe comparação prévia de resultados
objetivos:comparar algoritmos (re-implementar antigos)advançar estado-da-arte (implementar novos)
A entrada: sintaxe do LilyPond
soprano = \relative c’’ {\repeat volta 2 {
\time 3/4\partial 4 g4g2 d’4b4. a8 g4g4. a8 b4a2 b4d2 c4b4 a2g2 } b4
}
��� �� � ��43 �� � ��� � � � � �� � � ��
O formato de gabarito
Para a primeira frase do coral #1
{gg c/e [b] d/f#g bm/d bm7/d emc [b d] [b] f#◦/a gd gd/f# em7/g f#◦/ag/b am7/c d d7 g}
Medindo o tempo
chorale #1 (80 segmentos) no meu velho laptop:I 14s para os 9 algoritmosI 0.2s para o mais rápido (rede neural)
32s para analisar todos os 371 corais com a rede neural
Notação de pitch-class
C=0, C]=1, D=2, D]=3, . . . , B=11(ou MIDI: 60, 62, 64 . . . )
problem: C] = D[
Uma codificação para música tonal (Dr. Jamary Oliveira)c d e f g a b
7[ 7 21 62 766[ 90 8 22 35 49 63 775[ 91 9 23 36 50 64 784[ 92 10 24 37 51 65 793[ 93 11 25 38 52 66 802[ 94 12 26 39 53 67 81[ 95 13 27 40 54 68 82\ 0 14 28 41 55 69 83] 1 15 29 42 56 70 842] 2 16 30 43 57 71 853] 3 17 31 44 58 72 864] 4 18 32 45 59 73 875] 5 19 33 46 60 74 886] 6 20 34 47 61 75 897] 48
C=0, D=14, F]=42, A[[=67
cl-music
I biblioteca interna pra lidar com codificaçõesI imprime e lê notas em vários formatos de e pra várias
codificaçõesI todo o resto do rameau pode ignorar os detalhes disso
trivialmente
Análise funcionalAssociar a cada acorde uma função tonal
F F C/E F/Eb Bb/DI I V V /IV IV4
266in F major:
Algoritmo de Pardo e Birminghamcasamento de padrões trivial
04 =⇒ Maior703 =⇒ Menor7
E assim por diante. . . (extendemos ele apenas para colocar maisacordes e torná-lo menos enarmonicamente simples)
Algoritmo de Temperley and Sleatormaximizando algo sobre a música inteira (heuristicamente)
Muito lento.
E complicado. E ruim, então tiramos ele.
Hidden Markov Model (Raphael e Stoddard)como o Bayesiano, mas maximiza a probabilidade de toda a sequência de acordes em ummodelo de Markov
Analise = argmaxX1...Xn
P(X1 . . . Xn|n1 . . . nn)
simplificação de Markov:
P(X1 . . . Xn|n1 . . . nn) = (P(X1)×P(X1|n1))×(P(X2|X1)×P(X2|n2))×. . .×(P(Xn|Xn−1)×P(Xn|nn))
Assim, com os dados de treinamento só precisamos estimar P(Xi ),P(Xi |Xi−1) e P(Xi |ni ) em vez de estimar a probabilidade inteira.
Algoritmo K-Nearest Neighborso acorde mais comum dentre as notas mais parecidas com as sendo analisadas
Árvore de decisãoimplicitamente seguindo regras
Se a primeira nota é 0 (um dó) e a segunda é 28 (um mi) e aterceira é 55 (um sol), o acorde é um dó maior.
Se a primeira nota é 0 (um dó) e a segunda é 27 (um mibemol) e a terceira é 55 (um sol), o acorde é um dó menor.
E assim por diante.
Redes neurais (Tsui)fazem um pattern-matching sobre as notas de cada segmento
Agora, o melhor algoritmo é uma rede neural que ignora o contexto decada acorde.
Acertos médios (em 10 corais de Bach)
rede neural sem contexto 95% ± 6Knn sem contexto 94% ± 7Knn com contexto 92% ± 8
rede neural com contexto 91% ± 10árvore de decisão 89% ± 14Naïve Bayesian 88% ± 19
Hidden Markov Model 83% ± 16Pardo & Birmingham’s 82% ± 21
Matriz de confusão para a rede neural
M nc M7+ ◦ M7 m7 m ø7 ! !7 ◦7M xnc 2.8 x 1.8 1.8M7+ 100 x◦ x 4.2M7 xm7 xm xø7 7.1 x! x!7 50 50 x◦7 x
Precisão (%)
árvore de decisão rede com contextoM 93.7 94.2nc 77.1 78.2
M7+ 50.0 100.0◦ 95.7 100.0
M7 92.3 91.5m7 72.2 93.9m 97.2 95.5ø7 91.7 76.9◦7 100.0 66.7
Recuperação (%) (recall)
árvore de decisão rede com contextoM 96.1 97.0nc 77.1 89.0
M7+ 33.3 16.7◦ 91.7 83.3
M7 92.3 82.7m7 78.8 93.9m 96.3 98.2ø7 78.6 71.4◦7 100.0 66.7
F-measure (%)
árvore de decisão rede com contextoM 94.9 95.6nc 77.1 83.4
M7+ 40.8 40.8◦ 93.6 91.3
M7 92.3 87.0m7 75.4 93.9m 96.8 96.8ø7 84.9 74.1◦7 100.0 66.7
Range
highest pitch lowest pitchsoprano 116 254 282 298 331 334 186 034 050 068 075 223
049 070 100 165 185 197214 325 348 158 175 205239 352 087 110 244
alto 024 028 033 036 057 058069 078 084 123 217 225248 252 329 331 334 354359
345 186
tenor 024 043 074 083 151 156224 248 263 264 273 276281 329 354 371
229 070 205
bass 285 312 331 034 051 214 223 340 131328 143 155 197 205 219241 187 235 319 337 240070 075 165 175 239
Conclusão
O problema de identificação de acordes é resolvível dentro de umafaixa de tolerância razoável. O de análise funcional parece ser.Ainda existe muito a ser feito: terminar e testar a análise funcional,implementar uma interface gráfica, expandir o corpus, estudarnovos estilos de análise, expandir a parte de musicologiacomputacional, etc.
Recommended