Música, datos y gráficos


ggplot2 música R

Empieza el desafío #30díasdegráficos propuesto por la comunidad R4DS_es, comunidad hispanohablante de R para recordar a Florence Nightingale y aprender sobre visualización de datos.

En este primer día, la consigna fue crear un gráfico de barras/columna.

Hace tiempo que tenía ganas de trabjar con la API de Spotify y decidí visualizar las estadísticas que genera Spotify para caracterizar las canciones, esto utilizando el paquete Rspotify y mi álbum favorito durante esta cuarentena: HVMAN.:||:NATVRE. de Nightwish.

Nightwish

Nightwish es una banda de métal sinfónico originaria de Finlandia, la cual se hizo conocida en los 2000 por ser una de las bandas más importantes de métal sinfónico. La composición de letra y música la realiza en un 95% el tecladista Tuomas Holopainen y la banda se caracteriza por contar con una voz femenina y un sonido sinfónico bombástico (power metal sinfónico). En sus 20 años de historia ha tenido tres cantantes diferentes: Tarja Turunen (voz soprano), Anette Olson (voz rock-pop) y Floor Jansen (voz soprano-rock-metal-pop).

Durante 5 años se esperó su más reciente disco, el cual se tituló HVMAN.:||:NATVRE. Este álbum tuvo opiniones divididas entre los críticos por considerarlo muy alejado del metal, pero los fans lo consideran una “obra maestra”. Después de un mes de su lanzamiento hay cientos de videos en Youtube en donde fans, profesores de canto, músicos, etc. reaccionan a cada canción e incluso lloran frente a la cámara. El disco también ha alcanzado el TOP 10 en varios países tanto en copias físicas como digitales.

Este álbum es un álbum doble, en donde el primer disco “HVMAN” se caracteriza por el uso de las voces. La cantante principal Floor Jansen demuestra diferentes facetas de su amplio registro vocal (desde rock a soprano dramática) cantando melodías muy complejas. También, en cada coro (estribillo) del disco, se pueden escuchar tres voces en armonías de los integrantes Floor, Marco y Troy. En este disco, Nightwish por primera vez en muchos años no utiliza una orquesta sinfónica, sino que sólo un cuarteto de cuerdas.

El segundo disco, “NATVRE” es un disco instrumental en donde se divide la canción “All the Works of Nature Which Adorn the World” en ocho movimientos. Es un disco dedicado a la naturaleza y es completamente sinfónico, la banda no está presente, sólo el tecladista Tuomas Holopainen, la cantante Floor Jansen (haciendo vocalizaciones en voz lírica) y Troy Donockley en instrumentos de viento como gaita irlandesa.

API Spotify y R

Para acceder a la API de Spotify, creé una api ingresando al Spotify para desarrolladores y modifiqué el parámetro Redirect URIs por http://localhost:1410/ que es el puerto que usa R en mi computador.

Luego de eso, rescaté el client_id y client_secret y me fui a R. Dejo las credenciales por si es que no quieren hacer su propia API y utilizar la mía.

library(tidyverse)
library(Rspotify)


my_oauth <- spotifyOAuth(app_id="sporella_ds",
                         client_id="e5674ff41ebe4830bc05f255b54aea9a",
                         client_secret="27e712ff7f0a4610800dc1bd36effae8")
save(my_oauth, file="my_oauth")
load("my_oauth")

hn <- getAlbum("1iSsdlURK7CGUVlcz4M5Li", token = my_oauth) %>% 
  select(-available_markets) %>% 
  unnest(cols = c(id, name, duration_ms, track_number, disc_number, preview_url)) %>% 
  left_join(map_df(.x = .$id ,.f = ~getFeatures(track_id = .x, token = my_oauth)), by = "id") %>% 
  pivot_longer(cols = c(danceability:tempo, time_signature), names_to = "feature") %>% 
  mutate( disc_number = replace(disc_number, str_detect(name, pattern = "All the Works of Nature+"), 2),
          disc_name = if_else(disc_number ==1, "HVMAN", "NATVRE"),
    name = str_replace(name, pattern = "All the Works of Nature Which Adorn the World - ",
                       replacement = ""))

Me propuse como desafío utilizar sólo librerías de tidyverse, para no crear bucles. También cambié algunas cosas sobre los datos del disco que estaban erradas en Spotify.

Spotify features

Visualicé tres características generadas por Spotify. La lista completa de características y su descripción se encuentra aquí.

Energy

La energía es una medida de 0.0 a 1.0 y representa una medida perceptiva de intensidad y actividad. Por lo general, las pistas energéticas se sienten rápidas y ruidosas. Por ejemplo, el death metal tiene alta energía, mientras que un preludio de Bach tiene puntajes bajos en la escala. Las características perceptivas que contribuyen a este atributo incluyen rango dinámico, volumen percibido, timbre, frecuencia de inicio y entropía general.

Como se observa, existen pocas canciones con valores de energía muy altos (más cercanos al metal), incluso en el disco sinfónico, existen canciones con mayor energía que en el primero. Entonces, los críticos podrían tener razón al expresar que el disco es lejano al metal, pero los fans aman que esté más cercano a un preludio de Bach (o en el centro entre ambos).

Instrumentalness

Predice si una pista no contiene voces. Los sonidos “Ooh” y “aah” se tratan como instrumentales en este contexto. Las pistas de rap o palabras habladas son claramente “vocales”. Cuanto más cercano sea el valor de instrumentalidad a 1.0, mayor será la probabilidad de que la pista no contenga contenido vocal. Los valores superiores a 0.5 están destinados a representar pistas instrumentales, pero la confianza es mayor a medida que el valor se acerca a 1.0.

Comos se observa, el algoritmo de Spotify predice de buena forma qué canciones son instrumentales (segundo disco) de las que no, aunque detecta a Tribal como una canción instrumental cuando no lo es. ¿Explicación?, Tribal es la canción con menos cantidad de letra en el primer disco, la que tiene más percusiones y en donde la línea vocal tienes más “Oohs” y “Aahs” (y gruñidos). En el disco 2, detecta que Quiet as the Snow es menos instrumental, ¿será porque tiene susurros?

Valence

Una medida de 0.0 a 1.0 que describe la positividad musical transmitida por una pista. Las pistas con alta valencia suenan más positivas (por ejemplo, feliz, alegre, eufórica), mientras que las pistas con baja valencia suenan más negativas (por ejemplo, triste, deprimido, enojado).

Como se observa, el disco tiene pocos momentos de felicidad (todas las pistas están bajo el 0.5), es un disco melancólico, así que los fans están en su derecho a emocionarse y llorar en pantalla. Un dato curioso, es que en el primer disco, las tres canciones con más valencia fueron las que se tomaron como singles del album, justo en ese orden.

Acá les dejo la favorita de los fans:

Código

El código para extraer datos y hacer los gráficos está en mi Github




Compartir en: