Jesienna deprecha

Mam znowu doła
Znów pragnę śmierci
Wracają stare lęki
I nie mogę w nocy spać

Czy “jesienna deprecha” ma odbicie w słuchanej muzyce?

Zacytowany na początku tekst to oczywiście piosenka “Jesienna deprecha” Kur z niesamowitej płyty P.O.L.O.V.I.R.U.S..

Zadanie na dzisiaj to weryfikacja czy pora roku albo pora dnia mają wpływ na nastrój słuchanej muzyki. Ktoś może powiedzieć, że oczywiście, że tak, że jasne, że “jesienią to ja tylko Radiohead i Portishead, a na wiosnę to ABBA, latem zaś Jamajka i Bob Marley”. Dowody? Historia przesłuchanych utworów, z datą i godziną? Ma?

Ja mam. Serwis się nazywa Last.FM i pozwala przy pomocy różnych wtyczek (albo bezpośredniego połączenia konta np. w Spotify z LastFM) zbierać statystyki. Jak się ma dane od tysięcy (tfu! 43 milionów – przynajmniej tak donosił TechCrunch, chociaż przy nieco innej okazji) słuchaczy muzyki, to można robić z nimi cuda. Można je też sprzedawać wytwórniom płytowym albo stacjom radiowym, dzięki czemu wiedzą co jest “na topie” bezpośrednio od użytkowników. I dzięki temu produkują, to co produkują. Można też dowiedzieć się, kto słucha muzyki przed oficjalną premierą płyty i ścigać takie osoby. Polecam hasło Last.fm w angielskiej Wikipedii, o ile oczywiście nie znacie samego serwisu.

Ale wracjamy do tematu. Potrzebna jest historia przesłuchanych utworów, którą weźmiemy z Last.fm. Użyjemy do tego pakietu, który został już wycofany z CRANa… Trzeba zainstalować ręcznie paczkę pobraną z archiwum CRANa.

Potrzebny jest też klucz API dla LastFM – zdobyć można go na stronie API Last.fm, a jego wartość należy wpisać zmiennej lastkey.

Później dane z Last.fm będziemy łączyć z danymi ze Spotify (zwracanymi jako JSON) – stąd odpowiednie biblioteki.

Pobadamy sobie moje dane, chociaż nie ma problemu żeby przebadać kogoś innego (odpowiednio zmieniając user_name). Pobieramy dane.

Jeśli potrzebujecie więcej danych (RLastFM pozwala na pobranie 1000 ostatnich “scrobli” to polecam aplikacyjkę online, a później trochę obróbki danych z plik CSV.

Mamy dane, zobaczmy co w nich jest. Tak na szybko.

W jakie dni słuchałem muzyki?

A jak to się ma w poszczególnych dniach tygodnia? Więcej w weekend czy na przykład we wtorki?

No w weekend mniej. Wynika to głównie z tego, że muzyki która zapisuje się w Last.fm (np. na telefonie) słucham w drodze do i z pracy. W domu słucham muzyki z urządzeń bez wtyczek Last.fm… dlatego w danych z lutego nie zobaczycie u mnie Zbyszka Wodeckiego czy Wojciecha Młynarskiego. Tak, to było grane, żona może potwierdzić, dzieci też chociaż jeszcze nie rozpoznają wszystkiego. Chyba że Iron Maiden, Black Sabbath albo Boba Marleya. Ewentualnie “Faję”, ale to tylko Szymon.

Skoro słucham w drodze dom-praca i praca-dom to odpowiedni powinien być rozkład w stosownych godzinach:

No i jest, bez zaskoczenia. Uwaga mała – na wykresie są sumy liczby przesłuchanych utworów, a nie np. średnie. Dla rozkładu to bez większego znaczenia, ale poprawnie powinny być średnie czy też udziały procentowe.

Złączmy jeszcze liczbę przesłuchanych utworów w zależności od godziny i dnia tygodnia. Tutaj dopiero fajnie wszystko widać!

A co to za poniedziałki, wtorki i piątki ze słuchaniem w godzinach pracy? Wiem, że tego nie robię, więc co to do licha jest? Wyłamanie się z patternu? Podejrzane dni to…

Date n
2016-09-23 39
2016-09-26 7
2016-11-01 4
2016-12-02 9
2016-12-20 3

Po konfrontacji z kalendarzem – 23-28 września byłem na urlopie, jechałem sporo samochodem, zapewne grała muza z telefonu. 20 grudnia podobnie byłem w trasie. 2 grudnia nie wskazuje na nic konkretnego (nie pamiętam też, po logach jest to całą płyta “8 Piętro” Kombajnu Do Zbierania Kur Po Wioskach – bardzo fajna przy okazji), a 1.11 to dzień wolny. Sprawa wyjaśniona.

Co to za poniedziałki i wtorki ze słuchaniem po powrocie do domu? Niespotykane ;)

Date n
2016-11-29 4
2017-01-09 3

Jak widać pojedyncze utwory – być może coś testowałem.

A ja to słucham tylko jazzu i muzyki klasycznej mówili. A co widać? Najczęściej słuchani artyści (top 10% sumy utworów, żeby łatniej wyglądało):

Cohena było dużo – po jego śmierci nadrabiałem stare płyty, poza tym dawno go nie grałem (kilka lat), a czasem warto. Jazzu i klasyki nie widzę. Chyba, że klasykę rocka i metalu. Ale znowu – gramofon i WDTV Live nie scrobblują, więc nie widać Davisa czy Coltrane, tak samo jak Wodeckiego.

Przy okazji czy ktoś wie czy Playstation albo Xbox potrafią scrobblować do LastFM? Bo to kluczowa dla mnie informacja mająca wpływ na wybór konsoli, albo raczej domowego centrum rozrywki.

Zobaczmy jeszcze trochę w szczegółach – najczęściej słuchane piosenki (tylko 1%).

Wiem skąd ten wyniki – to jest darmowe konto na Spotify i ichnie radia typu “hard rock”, “’90s alternative”. To pierwsze 10-12 utworów z listy, a tam gdzie zaczyna się Cohen to własny wybór (z wykresu Cohen i Kombajn…).

Tośmy poanalizowali mój gust muzyczny. Zajebisty, co nie? :)

Wróćmy do tematu czyli określenia nastroju słuchanej muzyki. To weźmiemy ze Spotify (niżej dlaczego).

Najpierw przygotujmy sobie miejsce na dane ze Spotify dla każdego utworu.

A teraz dla każdego wiersza danych szukamy utowru w Spotify (potrzbene będą tylko ID utworów, kod niżej bierze trochę więcej). Szukamy najprościej – po tytule i wykonawcy. To samo robiłem dodając jeszcze tytuł płyty, ale wyniki dopasowania były (co mnie zdziwiło) gorsze.

Sprawdźmy jak bardzo nie udało się dopasować (odszukać) dane ze Spotify z tym co mamy w Lastfm. Najpierw wykonawcy.

LastFM Spotify Diff
the jimi hendrix experience jimi hendrix 4
queen david bowie 2
peter gabriel hardage 2
simon & garfunkel carly simon 1
deep east deep east music 1
jay-z jay z 1
peter gabriel nusrat fateh ali khan 1
remmy ongala & orchestre super matimila remmy ongala 1
hollywood persuaders the hollywood persuaders 1
thelonious monk thelonious monk trio 1
30 seconds to mars thirty seconds to mars 1

Różnice są, aczkolwiek niewielkie – z reguły brakuje “the” albo czegoś nieistotnego. Ciekawostka jest przy parze Queen – David Bowie. Odpowiedzialna za to jest piosenka “Under Pressure” (grana dwa razy, stąd dwójka w tabeli). To piosenka Queenu z Bowie. U Petera Garbiela chodzi o “Big Time”, okazuje się że jest jakaś wersja z Hardage (co to w ogóle jest?)

A jak nietrafione jest wyszukiwanie jeśli weźmiemy pod uwagę tytuły piosenek?

LastFM Spotify
’round midnight ’round midnight – 1998 digital remaster
a punch-up at a wedding a punch up at a wedding
atmosphere atmosphere – 2010 remastered version
back in baby’s arms back in baby’s arms – single version
the sky is crying bad to the bone
boredom (live at the roxy) boredom – live at the roxy club, london
burn burn – from “natural born killers” soundtrack
burn burn – remastered
cherish the day cherish the day – remastered
children of the sea children of the sea – remastered version
countdown countdown – mono version
creeping death (live at rasputin music) creeping death – live at rasputin music, berkeley, ca – april 16th, 2016
dead souls dead souls – 2007 remastered version
dreams dreams – 2004 remastered edition
drive in saturday drive-in saturday – remastered
drums a go-go drums a-go-go
enjoy the silence enjoy the silence – single mix
exhibit 13 exhibit 13 – plus hidden track
fade to black (live at rasputin music) fade to black – live at rasputin music, berkeley, ca – april 16th, 2016
first week/last week… carefree first week / last week….carefree

Znowu – różnice na poziomie “single version” albo “remastered version”. Nieistotne, muzyka jest ta sama.

zostawiamy tylko dane, dla których udało się odszukać ID w Spotify, plus zróbmy porządek z datami – przyda się później.

Na stronie z dokumentacją i konsolą API Spotify uzyskujemy klucz tymczasowy. Można inaczej, tak jeszt szybciej. Wartość wygenerowaną do pola “OAuth Token” na stronie wpisujemy w zmienną token.

Robimy miejsce na cechy utworu. Dla wszystkich utworów pobierzemy jego cechy ze Spotify – w większości przypadków liczbę w przedziale 0-1.

Jakie to cechy? Ich znaczenie zgodnie z dokumentacją na stronie API Spotify jest następująca:

  • acousticness – czy utwór jest akustyczny? 1.0 to z bardzo dużym prawdopodobieństwem utwory instrumentalne
  • danceability – czy utwór “nadaje się” do tańca; wskaźnik opiera się na połączeniu różnych miar w tym tempa i rytmu. Im wyżej, tym bardziej taneczny kawałek. Na dancingi bierzcie te numery, które są z lat ’70-80 i mają wysokie danceability – powinno się sprawdzić, szczególnie jak doda się do tego filtr na wysoką popularność.
  • energy – zazwyczaj utwory energiczne są szybkie i głośne. Na przykład death metal ma wysoką energię, podczas gdy Bach raczej niską
  • instrumentalness – wskaźnik określający czy utwór zawiera wokale. Wszelakie “oooo” i “aaaaa” są traktowane jako części instrumentalne. Rap lub melodeklamacje są wyraźnie “wokalne”. Im wartość instrumentalness jest bliżej jedynki, tym większe prawdopodobieństwo, że utwór nie zawiera wokali. Wartości powyżej 0.5 mają reprezentować utwory instrumentalne, ale pewność jest większa gdy wartość ta osiąga 1.
  • liveness – wykrywa obecność publiczności w nagraniu. Wyższe wartości liveness reprezentują zwiększone prawdopodobieństwo, że utwór był wykonywany na żywo, przy wartości powyżej 0.8 mamy już nieomal pewność nagrania koncertowego
  • loudness – ogólna głośność utworu w decybelach (dB), wartości przyjmują wartości od -60 od 0 decybeli. Wartość jest uśredniona dla całego utworu, jest silnie skorelowana z amplitudą dźwięku
  • speechiness – obecność wypowiadanych słów w utworze – im więcej słów (na przykład nagrania audibooków czy poezja śpiewana) tym bliżej do jedynki. Wartości powyżej 0.66 opisują utwory, które prawdopodobnie są wykonane w całości z wypowiadanych słów. Wartości pomiędzy 0.33 i 0.66 opisują utwory, które mogą zawierać zarówno muzykę jak i słowa – na przykład rap. Wartości poniżej 0.33 to najprawdopodobniej utwory instrumentalne
  • tempo – szacunkowe tempo wyrażone w BPM (beats per minute)
  • valence – miara opisująca nastrój; utwory o wysokiej wartości współczynnika brzmią bardziej pozytywne

Ile udało się pobrać danych? 725 sztuk, co jest próbką 72.5% wszystkich przesłuchanych utworów. Bardzo ładny wynik. Im więcej różnej polskiej muzyki słuchasz, a nie ma jej w Spotify tym będzie gorzej. Jeśli słuchasz tylko Spotify – będzie 100%. Spotify klęknie przy Hey, Świetlikach, Pidżamie Porno, nie mówiąc o jakichś wynalazkach typu Zacier.

Jeszcze poukładajmy po kolei dni tygodnia (bo lubridate za pierwszy dzień tygodnia uznaje niedzielę) i miesiące (te akurat nie tak jak w kalendarzu, a w kolejności danych – nie mamy pełnego roku).

No to zaczynamy zabawę!

Sprawdźmy ja wyglądają wartości poszczególnych cech i ich rozkład?

Duża rozpiętość w valence (o to głównie nam chodzi – ta miara odpowiada za nastrój), trochę w danceability, energy. Delikatne różnice w liveness. Właściwie bez żadnych odstępstw w instrumentalness (za mało tego jazzu i klasyki się załapało) a co za tym idzie speechiness. Na tempo nie ma według mnie sensu patrzyć, “po wolnej musi być szybka, takie są zasady muzykowania” (zadanie domowe: z której płyty Illusion pochodzą te słowa?).

Zobaczmy jak cechy mają się do siebie? Czy są skorelowane?

Bałagan jest na tym wykresie. Widać od razu zależność energy-loudness, a inne?

Sprawdzmy jak to wygląda na poziomie korelacji pomiędzy cechami – na szybko, na wykresie z bardzo fajnego pakietu do tych spraw – corrplot.

Potwierdza się to co widać było na wykresie z pairs() – wyraźna dodatnia korelacja (czyli: im bardziej, tym bardziej) loudness i energy, ujemna (im bardziej, tym mniej) koralacja acousticness – energy oraz acousticness – loudness (co wynika z tej dodatniej korelacji).

Ciekawa jest dodatnia, ale nie za silna (współczynnik korelacji 0.49) korelacja valence – danceability. Im smutniejszy utwór, tym bardziej do tańca. WTF? Zobaczmy to:

Czas na odpowiedź na postawione na początku pytanie – czy pora roku (miesiąc) ma wpływ na to jakiej muzyki słuchamy? Jakiej czyli o jakich cechach?

Sprawdźmy zmienność cech na przestrzeni czasu.

Co widać tutaj? valence powoli rośnie od początku roku – mogłoby to potwierdzać teorię o “jesiennej depresji”, ale w tym przypadku pokazuje, że zacząłem słuchać automatycznych list Spotify opartych na rocku i grungee’u. Niestety – dowodu tezy nie będzie tym razem. Rozczarowanie, żal, smutek i wieki zawód… Ale bawmy się dalej, bo o zabawę przecież chodzi! Za chwilę będzie wykresik uśredniający po miesiącach, a nie tylko po dniach.

Najpierw jednak weźmy najpopularniejszych wykonawców i sprawdźmy czy różnią się między sobą. A tak naprawdę to sprawdzimy czy cyferki jakie podaje Spotify mają sens. Będziemy to też sprawdzać na konkretach w innym poście.

Wyniki jakie widać od razu:

  • speechiness zdecydowanie wyższe niż przeciętnie dla Rage Against the Machine i Trickiego. Wow! działa! No chyba, że nie wiecie co to za muzyka, to nie widzicie że działa.
  • acousticness wyższe dla Cohena, trochę wyższe dla Sade i Kultu. Pierwsze dwa trafne, ostatnie – też trafne. Bo dużo było Kultu z “MTV Unplugged” (wiem, bo sprawdzałem co było grane owego 23 i 28 września)
  • valence – Brodka (ta druga jej płyta) najbardziej dołująca? No come one… Tutaj Spotify się nie popisało
  • wysokie energy przy Metalice i RATM jak najbardziej trafne

Obiecany wykres uśrednionych cech w miesiącach:

Na wykresie wybrałem tylko te, które zmieniają się jakoś widocznie w czasie.

No niby ten listopad najbardziej dołujący jest… Żeby udowodnić tezę trzeba by zebrać dane od jakiejś większej ilości użytkowników. Najlepiej od razu ze Spotify, bez tej wycieczki naokoło przez Lastfm. Ale to temat na pracę domową.

Skąd takie wartości? oczywiście zależą od tego co było grane. A było najpopularniejsze (najwięcej odegranych utworów – suma):

Month Artist n
Sie Blue Man Group 2
Wrz Tricky 10
Paź Curtis Mayfield 7
Paź Herb Alpert 7
Paź Pantera 7
Lis Leonard Cohen 27
Gru The Smashing Pumpkins 19
Sty Pearl Jam 14
Lut Pink Floyd 10

Sprawdźmy jeszcze cechy dla tych pozycji:

Month Artist speechiness acousticness instrumentalness valence
Sie Blue Man Group 0.056 0.022 0.779 0.292
Wrz Tricky 0.182 0.194 0.238 0.535
Paź Curtis Mayfield 0.065 0.290 0.013 0.772
Paź Herb Alpert 0.044 0.468 0.780 0.680
Paź Pantera 0.102 0.072 0.028 0.218
Lis Leonard Cohen 0.039 0.583 0.085 0.364
Gru The Smashing Pumpkins 0.041 0.108 0.700 0.373
Sty Pearl Jam 0.064 0.065 0.007 0.329
Lut Pink Floyd 0.043 0.292 0.413 0.384

Patrząc na słupki i liczyby, szczególnie w październiku (trzech wykonawców tak samo popularnych) widać znaczenie uśredniania. Pojedyncze dane są rozstrzelone, a średnia je wyrównuje. Na zestawieniu dla większej ilości danych (więcej użytkowników) warto w takich przypadkach rysować wykres pudełkowy (geom_boxplot() z ggplot2) lub skrzypcowy (geom_violin()) dla każdego z miesięcy. Można też ważyć wskaźniki – na przykład popularnością wykonawcy albo poszczególnych utworów (znam takich, co przez całą noc słuchali na repeat once “Hey You” z “The Wall”).

Z ciekawości zobaczmy jeszcze grupowanie w innych przekrojach:

  • po dniach tygodnia (na wykresie tylko te zmieniające się, kod rysuje wszystko)

  • w porach dnia (godzinach)

Widać wyraźną dziurę o 19. O 19 to ja oglądam Fakty i Wiadomości (żeby mieć porównanie propagandy lewackiej i prawackiej). Ale to było już widać na początku, w rozkładzie godzinnym.

Ciekawe? Bardzo. Będą też inne ciekawostki, już niedługo.

2 myśli na temat „Jesienna deprecha

Dodaj komentarz