Letras

Row {data-height = 50}

Texto

Gráfico 1 - Nuvem de Palavras: mostra as palavras mais recorrentes nas músicas do Chico buarque. As palavras consideradas são aquelas que tem uma frequência mínima (>5) nos textos, para não “poluir” a nuvem.

Gráfico 2 - Rede de Associações: mostra as palavras mais comumente associadas, ou seja, que mais aparecem conjutamente (antes ou depois) com a palavras “amor”. O “amor” foi escolhido como referência, mas a rede pode ser feita com outras palavras, inclusive mais de uma.

Gráfico 3 - % de Polaridades por Música: em análise de texto, podemos atribuir polaridades (-1, 0, 1) que corresponde aos sentimentos “Negativo”, “Neutro” e “Positivo”, respectivamente, às palavras das letras. O gráfico exibido mostra as porcentagens de cada sentimento nas músicas de Chico Buarque, considerando palavra a palavra.

% de polaridades por música

Row

Nuvem de palavras

Associação entre palavras

Acordes

Column

Acordes distintos/música

Densidades de Variáveis Extraídas

Column

Texto

Gráfico 1 - Quantidade de acordes distintos: este gráfico mostra as quantidades de acordes diferentes, desconsiderando as repetições, que aconteceram em cada música considerada aqui.

Gráfico 2 - Densidades de Variáveis Extraídas: com os acordes em mão, podemos realizar a extração de algumas covariáveis legais. Os exemplos aqui são de porcentagens de acorde com sétima, quinta, quarta, nona, acordes menores, entre outros, tudo isso por música. o gráfico mostra as densidades destas variáveis.

Gráfico 3 - O Diagrama de Cordas: este gráfico representa as frequências que cada transição entre os acordes ocorreram no total de músicas trabalhadas aqui. No caso, considera-se apenas a versão “simples” do acorde, ou seja, sem notas extras. O diagrama está na ordem do círculo das quintas,

Diagrama de cordas

Spotify

Column

Gráficos sobre Dançabilidade

Escalas: Cifraclub x Spotify

    
        C   C#    D   D#    E    F   F#    G   G#    A   A#    B
  C  1537    0  358   87  807   41    0  436  172  371    0   87
  C#    0    0    0    0    0    0    0    0    0    0    0    0
  D     0   77  291   77    0  154  231  154    0    0    0   77
  D#   83    0   83    0   83    0    0    0    0    0    0    0
  E     0    0  176   51  528    0  176  176    0  148    0  148
  F   152  238  247   70    0  222  119  689  119   82  201  790
  F#    0    0    0   85    0    0    0    0    0    0    0    0
  G     0    0    0    0   47    0    0  255    0    0    0  321
  G#    0    0    0    0    0    0    0    0    0    0    0    0
  A   159    0  194   97  360  216   34 2103    0  515  144    0
  B     0    0    0    0    0    0    0    0    0    0    0    0

Column

Definindo as variáveis

As variáveis mostradas nos gráficos sobre as músicas do Chico Buarque podem ser definidas simplificadamente como:

Dançabilidade: descreve o quanto uma música é “dançável”. Esta é uma medida que considera elementos como o ritmo, a batida, o tempo e a regularidade da música.

Energia: é uma midade que representa a intensidade e atividade da música. Músicas mais energéticas são rápidas, altas e ruidosas, por exemplo. Por outro lado, músicas clássicas são consideradas de pouca energia.

Sonoridade: é uma medida em decibéis sobre o quanto as canções são “altas”, no sentido sonoro. Essa variável tem relação com com força física, ou amplitude, das músicas.

Fala: essa é a variável que mostra o quanto da música são palavras faladas. Se esta medida estiver acima de 0.66, há grande chances dela ser inteiramente falada. De forma análoga, valores abaixo de 0.33 indicando músicas que provavelmente tem pouco ou quase nada de palavras.

Vivacidade: detecta a presença de audiências nas gravações. Se este valor estiver acima de 0.8, por exemplo, existe uma alta probabilidade da música ser ao vivo.

Duração: é a duração da música em milisegundos.

Acusticidade: é uma medida de confiança sobre o quanto uma música é acústica.

Gráficos - Os gráficos apresentados são da variável dançabilidade contra as outras explicadas acima, com uma reta de regressão linear simples sobre os pontos. Podemos observar o quanto as relações explicitadas fazem sentido. Por exemplo, quanto mais temos de energia em uma música, maior é seu nível de dançabilidade. Da mesma forma, quanto mais acústica, ela é menos dançável também, e assim por diante.

Tabela - A tabela apresentada nessa seção representa as escalas obtidas através do Cifraclub versus as escalas do Spotify. Um dos grandes problemas do Cifraclub é a quantidade de informações incorretas que os usuários inserem. Esta comparação demonstra o quanto os dados de um software diferem do que foi escrito no Cifraclub.

Extração

Column

Letras

# install.packages(“vagalumeR”)
library(vagalumeR)
chave <- "sua-api-key"
artista <- "chico-buarque"
ids <- songNames(artista)
# todas as letras
letra <- purrr::map(ids$song.id, lyrics, 
                    artist = artista, key = chave, type = "id") %>% 
  purrr::map_dfr(data.frame)

# letras por nome da música
letra <- lyrics("a-banda", artist = "chico-buarque", 
                key = chave, type = "name")

Acordes

library(tidyverse)

# install.packages(“chorrrds”)
library(chorrrds)

nomes <- get_songs(artista)
# todos os acordes
acordes <- get_chords(nomes$url)
head(acordes)
# letras por música específica
musica <- nomes %>% dplyr::filter(
  stringr::str_detect(name ,pattern  = "a banda"))

Column

Spotify

# devtools::install_github("tiagomendesdantas/Rspotify")
library(Rspotify)

busca <- unique(acordes$music) # do objeto anterior

chave <- spotifyOAuth("app_id","client_id","client_secret")

# buscando os ids das músicas dentro do Spotify
possibly_track <- purrr::possibly(searchTrack, otherwise = "mensagem")
ids <- purrr::map(busca, possibly_track, token = chave) %>% 
  purrr::map_dfr(data.frame) %>% 
  dplyr::select(id, display_name)

# buscando as features dos ids anteriores
info <- purrr::map_dfr(ids$id, getFeatures, token = chave)  
spotify <- dplyr::inner_join(ids, info, "id") %>% 
  group_by(id, display_name) %>% 
  slice(1) # mantendo apenas a primeira linha de cada nome de música

Unindo tudo

acordes <- acordes %>% 
  dplyr::mutate(acorde = stringr::str_extract(chord, 
                                              pattern = "^([A-G]#?b?)"),
                song = stringr::str_remove(music, "chico buarque ")) 

letra <- letra %>% 
  dplyr::mutate(song = stringr::str_to_lower(song),
                song = abjutils::rm_accent(song))

spotify <- spotify %>% 
  dplyr::mutate(song = stringr::str_to_lower(display_name), 
                song = abjutils::rm_accent(song))

match <- dplyr::inner_join(letra, acordes, by = "song") %>% 
  dplyr::inner_join(spotify, by = "song") %>% 
  dplyr::select(-c(uri, analysis_url))