Escolar Documentos
Profissional Documentos
Cultura Documentos
Natal
2021
Ábia Mariane Aquino do Nascimento
Natal
2021
Universidade Federal do Rio Grande do Norte - UFRN
Sistema de Bibliotecas - SISBI
Catalogação de Publicação na Fonte. UFRN - Biblioteca Setorial Prof. Ronaldo Xavier de Arruda - CCET
______________________________________________________
Prof. Dr. Bruno Monte de Castro (DEST/UFRN)
Orientador
______________________________________________________
Prof. Dr. Antonio Marcos Batista do Nascimento (DEST/UFRN)
Examinador
______________________________________________________
Prof. Dr. Eliardo Guimarães da Costa (DEST/UFRN)
Examinador
MINISTÉRIO DA EDUCAÇÃO
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
SISTEMA INTEGRADO DE PATRIMÔNIO, ADMINISTRAÇÃO E
FOLHA DE ASSINATURAS
CONTRATOS
Emitido em 09/09/2021
Para verificar a autenticidade deste documento entre em https://sipac.ufrn.br/documentos/ informando seu número: 2
, ano: 2021, tipo: ATA DE DEFESA DE TRABALHO DE CONCLUSÃO DE CURSO, data de emissão: 09/09
/2021 e o código de verificação: 2e3267998b
Dedico este trabalho aos meus pais, por tudo que sempre fazem por mim.
Dedico também a todos os professores que contribuíram em minha
formação, desde o jardim de infância até os dias atuais.
Agradecimentos
Em primeiro lugar a Deus, que me deu uma nova oportunidade de viver e junto a
essa oportunidade me presenteou com muitas conquistas, dentre as quais essa.
Aos meus pais Antonio Araújo do Nascimento e Maria Aquino Merciano do Nasci-
mento, peças fundamentais. Por todo apoio durante a vida, por todo grande cuidado e por
toda preocupação. Hoje podemos comemorar juntos todo esforço. Muito obrigada!
Ao meu irmão Abner Moabe, por toda ajuda e incentivo, pelas alegrias comparti-
lhadas a cada conquista nessa caminhada.
Ao professor Dr. Bruno Monte de Castro, pelas grandes orientações durante a
elaboração deste trabalho e pela compreensão em alguns momentos delicados que passei
durante a fase de desenvolvimento dessa pesquisa.
Aos professores Dr. Antonio Marcos Batista do Nascimento e Dr. Eliardo Guimarães
da Costa, por aceitarem o convite para a participação da banca.
Deste modo também agradeço a todos os demais professores que compõem o DEST,
por todo conhecimento compartilhado dentro e/ou fora de sala de aula, dentre os quais
destaco o professor André Pinho e as professoras Denize Barbosa e Mariana Araújo, pelas
grandes ajudas em distintos momentos que precisei. Gratidão a todos vocês.
A toda equipe do LEA, pela oportunidade de conhecer diferentes aplicações da
estatística em nosso cotidiano, em especial a Talita por todo suporte em cada projeto.
A todos os meus grandes companheiros dentro da universidade, que contribuíram
das mais variadas maneiras durante todo esse tempo, nos quais destaco a Beatriz Ariadna,
Elizabeth Palhano, Tayane Varela, Ivonaldo Silvestre, Alessandro Pereira, Wesley Cruz,
Felipe Maciel, Ana Gabriela, Ana Luzielma, Jocicleyton Ferreira, Mariana Cavalcante,
Samuel Duarte, Julio Cesar e Thiago Valentim. O apoio de cada um de vocês tem sido
muito importante.
Agradeço também a toda equipe que compõe o IEPI - LIGA, pela companhia, por
cada ajuda e pela oportunidade que me foi dada de colocar em prática os conhecimentos
estatísticos adquiridos dentro da universidade.
A cada um dos meus irmãos que fazem parte, juntamente comigo, da AD o Bom
Samaritano e todo setor 9 da IEADERN, que de fato se alegram comigo em cada conquista.
A todos que contribuíram, diretamente ou indiretamente, para que este sonho (de
tantos) pudesse se tornar real também em minha vida.
Com sincera gratidão, a todos vocês, muito obrigada!
“Pois todas as coisas foram criadas por ele, e tudo existe por meio dele e para ele. Glória
a Deus para sempre! Amém!”
Romanos 11.36
Resumo
A música é uma das formas de expressão artística que está presente em nossa sociedade
desde muito tempo, existindo evidências de que é não apenas conhecida mas também
praticada desde a pré-história. Essa forma de arte é resultante da combinação de sons e
silêncios ao longo de um tempo. Embora vivamos em um mundo imerso na música, nem
sempre o processo de composição musical é algo tão simples, envolvendo, além da parte
artística, o raciocínio lógico e matemático. Distintos trabalhos vêm estudando diferentes
ferramentas para a elaboração de composição musical algorítmica, isto é, a elaboração de
músicas com auxílio de algoritmos computacionais, na qual existe uma entrada (fornecida
por seres humanos), seguida da aplicação de algum conjunto de regras (algoritmo) e retorna
uma nova melodia. Este trabalho tem como objetivo apresentar definições e propriedades
das cadeias de Markov, além de expor um modelo de composição musical utilizando esse
modelo probabilístico a partir de músicas já existentes e aplicações. Para este feito foi
utilizada a linguagem R para implementação do algoritmo e obtenção da nova melodia.
Verificou-se que as novas melodias geradas seguiam certa lógica na combinação das notas
e não apresentavam muita semelhança com a melodia inicial. No entanto, percebeu-se que,
em alguns casos, quando a melodia termina, pode parecer que foi interrompida antes da
conclusão. A partir deste resultado pode-se concluir que esse modelo, de fato, é capaz de
ajudar na composição de novos trechos musicais, obedecendo o princípio básico da teoria
musical, isto é, com as notas dentro da tonalidade da música, no entanto pode não ser o
suficiente para substituir por completo o toque artístico humano.
Figura 3.1 – Representação de alguns dos elementos que compõem uma partitura. . 27
Figura 3.2 – Representação das 7 notas musicais naturais no pentagrama na clave
de sol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Figura 3.3 – Representação de uma nota musical e sua oitava. . . . . . . . . . . . . 28
Figura 3.4 – Representação de um trecho musical na partitura. . . . . . . . . . . . . 29
Figura 3.5 – Estrofe completa da canção Castelo Forte. . . . . . . . . . . . . . . . . 31
Figura 3.6 – Experimento 1: Melodia composta a partir da canção Castelo forte. . . 32
Figura 3.7 – Experimento 2: Melodia composta a partir da canção Castelo forte. . . 35
Lista de tabelas
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 CADEIAS DE MARKOV . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 Definições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.1 Processo estocástico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.2 Processo homogêneo no tempo . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.3 Cadeia de Markov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Estimação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 APLICAÇÃO E RESULTADOS . . . . . . . . . . . . . . . . . . . . . 24
3.1 Introdução à composição algorítmica via cadeia de Markov . . . . . 24
3.2 Alguns conceitos musicais . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Aplicação do método . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.1 Obtendo as matrizes de transição . . . . . . . . . . . . . . . . . . . . . . 28
3.3.2 Gerando melodias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.3 Executando áudios a partir do R . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 Aplicação e resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4 CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . . . . 36
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
APÊNDICES 39
13
1 Introdução
2 Cadeias de Markov
2.1 Definições
2.1.1 Processo estocástico
Um processo estocástico é um conjunto de variáveis aleatórias que traduzem o
comportamento de algum evento ao longo do tempo. Formalmente pode ser definido como:
Definição 2.1.1. Um conjunto de variáveis aleatórias (Xt )t∈T indexadas por um conjunto
T, contidas em um espaço de probabilidade (Ω, F, P) e assumindo valores em um conjunto
E, chamado espaço de estados (ou alfabeto), é um processo estocástico.
Exemplo 2.1.1. Preço de uma ação ao final dos próximos 5 anos, em que T =
{1, 2, 3, 4, 5}.
Neste caso, temos que t pode assumir os 5 valores dentro desse conjunto. A exemplo,
considere nesse contexto X3 = R$ 21,33. Pode-se interpretar que ao final do terceiro
ano (t = 3), a ação estará custando R$ 21,33.
Outra vez por se tratar de intervalo existem infinitos valores dentro do conjunto E.
Portanto processos como esse são classificados como estocástico contínuo.
Definição 2.1.2. Se um processo estocástico (Xn )n∈Z é homogêneo no tempo, segue que:
Exemplo 2.1.5. Seja (Xn )n∈Z um processo homogêneo no tempo. Segue que:
ou ainda:
Capítulo 2. Cadeias de Markov 17
Definição 2.1.3. Considere (Xn )n∈Z um processo estocástico discreto em tempo discreto
e homogêneo no tempo. Se a propriedade
Definição 2.1.4. Uma matriz de transição associada a um processo de Markov com espaço
de estados finito E é dada por uma matriz quadrada em que seus elementos correspondem
a probabilidade de um evento passar de um determinado estado (presente) para outro
(futuro).
p(0|0) p(1|0) ... p(n|0)
p(0|1) p(1|1) ... p(n|1)
P = . .. .. .. .
.. .
. .
p(0|n) p(1|n) ... p(n|n)
De forma geral qualquer matriz quadrada que satisfaçam essas duas condições é
denominada matriz estocástica.
Exemplo 2.1.6. Suponha que em Natal α seja probabilidade de chover (C) em um dia
dado que no dia anterior também choveu, e β a probabilidade de chover em um dia, dado
Capítulo 2. Cadeias de Markov 18
que no dia anterior não choveu (N). A matriz de transição para esse processo markoviano
é dada por:
C N
1−α
C α
.
N β 1−β
Exemplo 2.1.7. As taxas de glicose no sangue podem ser classificadas como baixa (B),
normal (N) e alta (A). Os valores que definem essas classificações podem variar, mas
para este exemplo considere como baixa, taxas inferiores a 70mg/dL, entre 70mg/dL e
140mg/dL como normal, e superior a 140mg/dL como alta. Suponha que um paciente
acompanhou ao longo de um mês essas taxas, realizando 3 medições diárias (manhã, tarde
e noite). Com base nessa sequência foram obtidas as seguintes probabilidades:
Dessa forma observe que para este paciente, no período em análise, a probabilidade de
uma taxa que está normal permanecer normal é de 0.54, enquanto que a probabilidade de
uma taxa baixa passar a ser normal é de 0.31.
A matriz de transição que representa essa cadeia de Markov pode ser representada
da seguinte maneira:
B N A
B 0.19 0.31 0.5
De modo alternativo, a matriz de transição pode ainda ser representada por meio
do diagrama de transição de estados. A direção para qual a flecha aponta representa a
probabilidade de passar de um estado q para um estado r:
0.54
N
0.32
0.14
0.31
0.36
Para o exemplo das chuvas em Natal o diagrama pode tomar a seguinte representa-
ção:
1−α
α C N 1−β
Definição 2.1.5. Seja (Xn )n∈Z um processo que admite valores em um conjunto de espaços
E. Se existe uma função
Xn+1 = F (Xn , Un )
em que (Un )n∈Z é uma sequência de variáveis aleatórias uniformes em (0,1), então o
processo é uma cadeia de Markov.
Essa definição é bastante viável para se trabalhar com simulações. Nunes (2014)
apresenta como ela pode ser implementada para auxiliar na simulação de cadeias de
Markov. A seguir também é mostrado um exemplo de aplicação.
0 1
0 0.6 0.4
.
1 0.3 0.7
Xn+1 = (2.3)
1, se U > p(0|X )
n n
Desse modo, tendo por objetivo gerar uma amostra de tamanho n = 10, sendo X0 = 0 e
os seguintes valores vindos de uma uniforme (0,1), U0 = 0.43, U1 = 0.10, U2 = 0.47, U3 =
0.76, U4 = 0.30, U5 = 0.72, U6 = 0.32, U7 = 0.63, U8 = 0.56, dada a condição 2.3 acima, se
obtém os resultados contidos na Tabela 2.2.
Portanto a amostra gerada com base nos critérios estabelecidos é dada pela sequência
0,0,0,0,1,0,1,1,1,1.
2.2 Estimação
Nesse trabalho, se tem por interesse fazer inferência em cadeias de Markov. Nas
cadeias de Markov, os parâmetros que devemos estimar são as probabilidades de transição.
É possível utilizar tanto o método de inferência clássica quanto o de inferência bayesiana.
Neste trabalho, será apresentado apenas o método de inferência clássica, usando o método
de estimação de máxima verossimilhança.
Capítulo 2. Cadeias de Markov 21
L(P |x1 , x2 , ..., xn ) = P(X0 = x0 )P(X1 = x1 |X0 = x0 ) · ... · P(Xn = xn |Xn−1 = xn−1 )
n
= P(X0 = x0 ) P(Xm = xm |Xm−1 = xm−1 ). (2.4)
Y
m=1
n
Nn (q,r) =
X
I{Xm−1 =q,Xm =r} ,
m=1
n
P(Xm = xm |Xm−1 = xm−1 ) = p(r|q)Nn (q,r) .
Y
m=1
r∈E q∈E
r∈E q∈E
Capítulo 2. Cadeias de Markov 22
Para se obter o valor máximo dessa função, obedecendo a condição r∈E p(r|q) = 1,
P
∂
F (λ,p) = 1 − (2.5)
X
⇒ p(r|q)
∂λ r∈E
∂ Nn (q,r)
⇒ F (λ,p) = −λ (2.6)
∂p(r|q) p(r|q)
Com base na equação (2.6), pode-se obter um estimador para p(r|q) em função de Nn (q,r)
e λ do seguinte modo:
Resta agora encontrar o valor de λ. Uma vez que p(r|q) = 1 (da equação (2.5)),
P
r∈E
segue que:
Nn (q,r)
p(r|q)
b =
λ
Nn (q,r)
=
X X
p(r|q)
b
r∈E r∈E λ
Nn (q,r)
1=
X
r∈E λ
Nn (q,r)
P
1= r∈E
λ
λ= Nn (q,r).
X
r∈E
Nn (q,r)
p(r|q) =P . (2.7)
r∈E Nn (q,r)
b
Capítulo 2. Cadeias de Markov 23
N12 (A,A) 2 2
p(A|A) = = = = 0.4;
N12 (A,A) + N12 (A,B) 2+3 5
b
N12 (A,B) 3 3
p(B|A) = = = = 0.6;
N12 (A,A) + N12 (A,B) 2+3 5
b
N12 (B,B) 3 3
p(B|B) = = = = 0.5;
N12 (B,B) + N12 (B,A) 3+3 6
b
N12 (A,B) 3 3
p(A|B) = = = = 0.5.
N12 (B,B) + N12 (B,A) 3+3 6
b
A representação em forma de matriz de transição para este exemplo fica da seguinte forma:
A B
A 0.4 0.6
B 0.5 0.5
24
3 Aplicação e resultados
Neste capítulo será apresentada uma aplicação das cadeias de Markov em música. A
linguagem R foi utlizada para execução dos comandos e transcrição de um trecho musical.
Para isto, foram utilizadas duas cadeias de Markov, sendo que em uma delas o alfabeto são
as notas musicais e a outra cadeia tem como espaço de estados o tempo de duração das
notas. O intuito desse trabalho é gerar cadeias de Markov a partir do tempo de duração
das notas, e em seguida gerar uma amostra aleatória de cada uma dessas cadeias usando o
método de máxima verossimilhança, apresentados no Capítulo 2.
Exemplo 3.1.1. Suponha que uma determinada melodia seja composta da seguinte
sequência de notas:
Observação 1: Para este exemplo não foi considerado os demais elementos da música,
como tempo de duração e acordes.
O alfabeto para essa sequência é dado por E = {M i, Sol, Lá}. Desse modo, se
tentarmos compor uma nova melodia a partir dessa sequência, a nova composição será
Capítulo 3. Aplicação e resultados 25
N12 (M i,M i) 0
p(M i|M i) = = = 0;
N12 (M i,M i) + N12 (M i,Sol) + N12 (M i, Lá) 0+3+0
b
N12 (Sol,M i) 3
p(M i|Sol) = = = 0.5;
N12 (Sol,M i) + N12 (Sol, Lá) + N12 (Sol,Sol) 3+2+1
b
N12 (Lá,M i) 0
p(M i|Lá) = = = 0;
N12 (Lá,M i) + N12 (Lá,Sol) + N12 (Lá, Lá) 0+2+0
b
N12 (M i,Lá) 0
p(Lá|M i) = = = 0;
N12 (M i,Lá) + N12 (M i,Sol) + N12 (M i, M i) 0+3+0
b
N12 (M i,Sol) 3
p(Sol|M i) = = = 1;
N12 (M i,Sol) + N12 (M i,M i) + N12 (M i, Lá) 3+0+0
b
N12 (Lá,Sol) 2
p(Sol|Lá) = = = 1;
N12 (Lá,Sol) + N12 (Lá,M i) + N12 (Lá, Lá) 2+0+0
b
M i Sol Lá
Mi 0 1 0
Sol
0.5 0.2 0.3
.
0 1 0
Lá
1 0.3
Mi Sol 0.2 Lá
0.5 1
Figura 3.1 – Representação de alguns dos elementos que compõem uma partitura.
Figura 3.2 – Representação das 7 notas musicais naturais no pentagrama na clave de sol.
O conjunto das sete notas musicais que conhecemos (Dó, Ré, Mi, Fá, Sol, Lá e
Si) são classificadas como naturais. Além das notas naturais existem também as notas
acidentadas ou alteradas. Elas recebem esse nome por conter modificações na altura. Para
representá-las utilizamos os símbolos ], ao qual denominamos de sustenido e aumenta meio
tom na nota, e o símbolo [, ao qual chamamos de bemol e diminui meio tom na nota.
Embora na teoria sejam coisas distintas, na prática a forma de execução das notas
bemóis e sustenidos são semelhantes. A equivalência entre elas pode ser visualizada na
Tabela 3.1.
Outro conceito importante a ser definido é o de oitava. Na música, uma oitava
representa o intervalo entre uma determinada nota e outra com o dobro ou a metade de
sua frequência, permitindo que uma mesma nota possa ser executada em uma região mais
aguda ou mais grave, respectivamente.
A Figura 3.3 apresenta na pauta a representação das notas Dó (C) e Sol (G) e
suas respectivas oitavas na partitura. No exemplo, C4 é mais agudo do que C3, e G3 mais
grave que G4.
Capítulo 3. Aplicação e resultados 28
corresponde ao tempo de duração da nota que está na posição 2 do vetor de notas, e assim
sucessivamente. As notas dentro do vetor são representadas com os símbolos utilizados
nas cifras, isto é, os valores A, B, C, D, E, F e G. A Tabela 3.2 apresenta as notas e os
valores correspondentes ao utilizar a notação das cifras.
A3 B3 C] D3 D E3 F3 G3 G]3
0.07 0.65 0.00 0.07 0.14 0.00 0.00 0.00 0.07
A3
0.47 0.12 0.18 0.00 0.00 0.00 0.00 0.23 0.00
B3
0.5 1 3
0.5 0.50 0.50 0.00
A partir dessas matrizes foram geradas duas novas melodias, das quais uma é
resultado de uma amostra de tamanho 50 (menor do que a quantidade de notas da música
original que serviu como base), e uma outra canção resultante de uma amostra de tamanho
300. Para a montagem da partitura das composições foi considerada a mesma fórmula de
compasso.
O resultado do primeiro experimento está escrito na partitura presente na Figura
3.6, a seguir.
A3 B3 C] D3 D
0.00 0.60 0.00 0.20 0.20
A3
0.65 0.06 0.30 0.00 0.00
B3
0.5 1 3
0.5 0.33 0.67 0.00
Neste primeiro experimento observa-se que a melodia apresenta uma menor vari-
edade de notas, isto é, um espaço de estados menor do que a música original. As notas
representadas pelos símbolos E3, F3, G3 e G]3 não participaram da nova música.
Prosseguindo em nossas análises, a Figura 3.7 apresenta o resultado obtido a partir
de uma amostra de tamanho 300. Para este segundo experimento as probabilidades de
transição estimadas para as notas e tempos são apresentadas a seguir.
A3 B3 C] D3 D E3 F3 G3 G]3
0.00 0.71 0.00 0.10 0.18 0.00 0.00 0.00 0.02
A3
0.40 0.09 0.24 0.00 0.00 0.00 0.00 0.27 0.00
B3
0.5 1 3
0.5 0.45 0.55 0.00
4 Considerações finais
Este trabalho teve como principal objetivo propor um modelo para composição de
novas melodias através de cadeias de Markov. Para tal, se fez necessário a transcrição das
informações contidas nas partituras, isto é, as notas e seus respectivos tempos de duração
em forma de vetores.
Com base nesses dois vetores foram calculadas duas matrizes de transição: uma para
as notas musicais e outra para os tempos de duração. As estimativas para as probabilidades
de transição foram feitas utilizando o estimador de máxima verossimilhança. A obtenção
dos cálculos foi possível através de um algoritmo feito em R.
Uma vez que as matrizes de transição foram obtidas, o passo seguinte foi a geração
de amostras a partir de cada uma das cadeias, e com isso as novas canções eram obtidas.
As novas composições tiveram resultados relativamente bons, uma vez que, em
ambos experimentos, o resultado final foram peças cuja grande maioria das notas estão
dentro da tonalidade da música, permitindo uma combinação de notas que seguissem uma
certa lógica musical, as músicas não apresentaram muita aparência com a melodia original,
implicando em uma composição com sua própria identidade.
O final da peça resultante do primeiro experimento não aparenta que é a conclusão
da música, podendo passar a ideia de que o som foi interrompido. Isso pode ocorrer em
outras composições também, uma vez que não existe uma regra para a finalização das
composições. Isso poderia ser algo a ser investigado em trabalhos futuros, para que a
composição final fique cada vez melhor.
Uma outra sugestão para trabalhos futuros seria que, ao invés de usar apenas uma
única melodia para dar origem a outra nova canção, testar a possibilidade da utilização de
vários trechos musicais, em mesma tonalidade, e de forma conjunta, para verificar se os
resultados soariam ainda melhores. Existe ainda a possibilidade da utilização de cadeias
estocásticas com memória de alcance variável para a modelagem.
37
Referências
BILES, J. et al. GenJam: A genetic algorithm for generating jazz solos. ICMC Proceedings.
[S.l.], v. 94, p. 131–137. 1994. Disponível em: <https://genjamorg.files.wordpress.com/
2019/07/bilesicmc94.pdf>. Acesso em: 15 ago. 2021.
CORRÊA, D. C. Sistema baseado em redes neurais para composição musical assistida por
computador. 2008. Dissertação (Mestrado) – Universidade Federal de São Carlos. 2008.
163f. Disponível em: https://repositorio.ufscar.br/handle/ufscar/379. Acesso em: 15 ago.
2021.
HASSANI, Z.; WURYANDARI, A. I. Music generator with Markov Chain: A case study
with Beatme Touchdown. In: 2016 6th International Conference on System Engineering
and Technology (ICSET). IEEE. 2016. P. 179-183. Disponível em: <https://ieeexplore.
ieee.org/abstract/document/7849646>. Acesso em: 15 ago. 2021.
LIGGES, U. et al. tuneR: Analysis of Music and Speech. [S.l.], 2018. Disponível em:
<https://CRAN.R-project.org/package=tuneR>.
Referências 38
MCNULTY, K. How to play Star Wars and other tunes in R. 2018. Disponível em: <https:
//towardsdatascience.com/how-to-play-star-wars-and-other-tunes-in-r-5e837e8b71e4>.
Acesso em: 28 out. 2021.
R Core Team. R: A Language and Environment for Statistical Computing. Vienna, Austria,
2020. Disponível em: <https://www.R-project.org/>.
SPEDICATO, G. A. Discrete time markov chains with r. The R Journal, 07 2017. R package
version 0.6.9.7. Disponível em: <https://journal.r-project.org/archive/2017/RJ-2017-036/
index.html>.
URBANEK, S. audio: Audio Interface for R. [S.l.], 2020. R package version 0.1-7. Disponível
em: <https://CRAN.R-project.org/package=audio>.
VERBEURGT, K.; DINOLFO, M.; FAYER, M. Extracting patterns in music for composi-
tion via markov chains. In: International conference on industrial, engineering and other
applications of applied intelligent systems. Springer: Berlin, Heidelberg, 2004. P. 1123-1132.
Acesso em: 23 jul. 2021.
Apêndices
40
# Pacotes
library(gtools)
library(dplyr)
# Funo
# Caso "saida = 1" o resultado presentado ser as probabilidades em forma de matriz,
# caso contrario (saida = 2), o resultado apresentado sera em forma de vetor.
# SE TESTAR A SEQUNCIA "seq <- c("D", "A", "D", "A", "A", "C")"
# APARECEU VALORES "NaN" em algumas posicoes.
# Por isso, para corrigir o erro essa funcao "subs" foi criada.
if(saida == 2){
return(Matriz)
}else{
Mt <- matrix(Matriz$Probabilidade, ncol = length(levels(as.factor(sequencia))))
Mt <- t(Mt)
Mt
dimnames(Mt) <- list(levels(as.factor(sequencia)),
levels(as.factor(sequencia)))
return(Mt)
}
}
43
musica <-
musica %>%
mutate(octave = substring(pitch, nchar(pitch)) %>%
{suppressWarnings(as.numeric(.))} %>%
ifelse(is.na(.), 4, .),
note = notes[substr(pitch, 1, 1)],
note = note + grepl("#", pitch) -
grepl("b", pitch) + octave * 12 +
12 * (note < 3),
freq = 2 ^ ((note - 60) / 12) * 440)
musica_wave <-
mapply(make_sine, musica$freq, musica$duration) %>%
do.call("c", .)
return(play(musica_wave))
}
45
## APLICAO ##
library(markovchain)
# 1. Transcricao da melodia
Notas <- c("D5", "D5", "D5", "A", "B", "C#5",
"D5", "C#5", "B", "A", "D5",
"C#5", "B", "A", "B",
"G", "F", "E", "D",
"D5", "D5", "D5", "A", "B", "C#5",
"D5", "C#5", "B", "A", "D5",
"C#5", "B", "A", "B",
"G", "F", "E", "D", "D",
"A", "B", "A", "G#",
"A", "D",
"A", "A", "B", "C#5",
"D5", "C#5",
"D5", "C#5", "B", "B",
"A", "B",
"B", "A", "B", "G",
"F", "D5",
"C#5", "B", "A", "B",
"G", "F", "E", "D")
3, 1,
1, 1, 1, 1,
0.5, 0.5, 1, 1)
## Experimentos ##
# Exp. 1 - Criao de uma nova melodia com 50 notas
# Amostra de notas (2810, 22, 2021, 1508)
statesNames <- levels(as.factor(Notas))
mcB <- new("markovchain", states = statesNames,
transitionMatrix = Cadena(Notas))
set.seed(2810)
outs <- rmarkovchain(n = 50, object = mcB, what = "list")
# Amostra de tempos
statesNames1 <- levels(as.factor(Tempos))
mcB1 <- new("markovchain", states = statesNames1,
transitionMatrix = Cadena(Tempos))
set.seed(2810)
outs1 <- rmarkovchain(n = 50, object = mcB1, what = "list")
## Resultado
Media_Player(outs, as.numeric(outs1), bpm = 120)
data.frame(outs, outs1)
Cadena(outs)
Cadena(outs1)