Wrapping up my 2023 in music

2023 has been a weird year in music for me! I discovered a lot of new-to-me corners of music, didn’t go to very many shows by my standards, and largely flitted between new and familiar artists all year. Let’s dig in…

Each section of this post is pretty standalone, so feel free to skip around:

Top artists of 2023 #

My top artists of the year were, like in years past, a mix of familiar and new artists:

A stacked column chart showing top 10 artists across the 12 months of 2023. January shows significant chunks of time spent listening to Bombay Bicycle Club, Fred Again.., and Hey Rosetta! across about 150 listens. February has Bombay Bicycle Club, Fred Again.., and Overmono across about 150 listens. March has only about 50 listens total, with Bombay Bicycle Club, Overmono, and TSHA being the larger shares. April is less than 50 and only Overmono is noticeable. May is under 50 and is almost entirely Overmono listens. June is about the same as May and has a large chunk of Barry Can’t Swim listens. July is half the size of June and again Barry Can’t Swim is the only noticeable artist. August is nearly 100 listens, with a huge chunk of Hey Rosetta! and Bombay Bicycle Club. September is just over 50 and has a large chunk of Romy listens for the first time. October is over 100 and has noticeable Barry Can’t Swim, Bombay Bicycle Club, Romy, and Sofia Kourtesis chunks. November is over 100 and dominated by Bombay Bicycle Club. December is about 75 and largely Bon Iver listens. click to enlarge

Bombay Bicycle Club absolutely dominated my listening activity. This year they were a real comfort listen for me, and they released a new album. They also released a live album last year that really got me missing their live shows, so I was overjoyed to see that they’re back touring North America next year.

While Bombay Bicycle Club were a fairly consistent listen throughout the year, I devoted a good amount of listening time to other artists too:

Table of top 10 artists by listens. In order: Bombay Bicycle Club with 278 listens, Barry Can’t Swim with 147, Overmono with 116, Hey Rosetta! with 85, Fred Again.. with 70, Sofia Kourtesis with 68, TSHA with 63, Romy with 54, Bon Iver with 52, and DJ Seinfeld with 49.

In terms of familiarity and newness, 3 of my top 10 artists are artists that I discovered over 10 years ago, while I discovered the rest in the past 3 years.

artist year discovered
Bombay Bicycle Club 2009
Barry Can’t Swim 2020
Overmono 2020
Hey Rosetta! 2010
Fred again.. 2020
Sofia Kourtesis 2020
TSHA 2019
Romy 2020
Bon Iver 2009
DJ Seinfeld 2019

What do these artists have in common that might make them some of my most-listened-to artists of this year?

Hey Rosetta! and Bon Iver #

Most of my time listening to these artists was in short-lived but intense bursts, concentrated in days or nights where I was trying to get something done or calm down. I sought out familiar, calming music like Hey Rosetta! and Bon Iver.

Any artist that I discovered during college could fit this bill well, but some are better served for wallowing (Cold War Kids, The National) than relaxing.

Barry Can’t Swim #

When Barry Can’t Swim released his single Sunsleeper, it was so catchy. Sunsleeper ended up one of my most consistently listened to songs of the year, and my interest in his album spiked. I started eagerly awaiting his album release—so eagerly, in fact, that I accidentally pre-ordered his album twice.

The album came out shortly before I took a cross-country flight and I listened to the album on repeat for at least half the flight. Good stuff, and a consistent listen throughout the year. I also saw him live in March, which helped stoke the interest fires. As his handler for the night ushered him past the crowd, he asked “How did you discover him?!” as though awestruck by the fact that he’d sold out the smallish club venue.

Overmono #

Overmono has been so consistently great that I almost didn’t remember that their album, Good Lies, came out this year. Their live set at 1015 Folsom in April was even better than their set at Monarch last year, and their Manchester Boiler Room is entrancing. I’ve watched it at least 3 times.

Sofia Kourtesis #

I heard a couple songs of hers in 2021 (notably La Perla) and checked out her set at Portola in 2022 briefly, but when I saw she was coming out with an album this year I knew I had to pre-order it. And it was great! One of those albums where no one song burrows in your mind, but the whole album is enjoyable.

Romy #

It took me some time to lean into this album. Most of my listening was me putting it on to listen through, realizing that it had ended without really gripping me, and then hitting play again from the beginning.

With the repeated listens, and the tracks that I didn’t already know as singles eventually sticking with me, I recognized the album for what it is — purely enjoyable and hella queer pop tracks.

Her London Boiler Room set really captured me though, especially when she almost immediately cut to one of my favorite pop songs of all time, Ariana Grande’s Into You.

DJ Seinfeld #

I wasn’t expecting to see DJ Seinfeld on this list. I ranked his 2021 album Mirrors as one of my favorites of the year, but aside from discovering him that year, he barely showed up in my data.

What happened this year is that I pivoted the vast majority of my listening to SoundCloud. It was an intentional decision, but definitely facilitated by my company’s strong IT policy that doesn’t allow unapproved apps like Spotify to be installed, limiting me to web-based listening. Spotify web is not great.

So as a result, I was listening to SoundCloud Weekly every week instead of Spotify’s Discover Weekly playlist. And it’s a great playlist, but it doesn’t quite hit the blend of new to familiar that I might hope for. That means I end up listening to a bunch of familiar artists repeatedly — TSHA, DJ Seinfeld, Amtrac, and Fred again.. — that I might not have sought out as regularly otherwise.

Not mad, just surprised!

My SoundCloud 2023 Playback playlist is pretty indicative of both the repeat listens from SoundCloud Weekly, and the artists that I played and luxuriated in the high quality shuffle discovery that SoundCloud offers.

Some low-key obsessions #

Those were my top 10 artists of the year, but some other new music that I discovered this year really struck a chord (lol) with me and led to some noticeable-in-the-data obsessions.

DJ Heartstring #

A friend shared the DJ Heartstring Boiler Room the day it came out, and I was an immediate fan. I’d never heard of them before, but I listened to that set a bunch of times and then spent the next few months tracking down the unreleased tracks they played as they started to release them.

As a result, my Last.fm genre patterns look like this:

Sankey chart showing top 5 genres from January to June, with Electronic being in the top spot for all months except April, House being in the second for all months except April, Indie is third for January, then fourth for February, then fifth for March and April before disappearing from the chart. Pop is fourth for January, third for February and March, then jumps to first for April, then back down to third for May and then leaves the chart. Indie Rock is fifth for January then disappears. Indie Pop is fifth for February, then fourth place for March and April before leaving. Techno makes an appearance in May at fourth, then rises to third for June. Rock, Dance, and Deep House each show up for a month in fourth and fifth place. Sankey chart showing top 5 genres from June to November, with Electronic and House holding strong in first and second for all of the months. Techno holds third from June until September when it disappears and Indie, which showed up in fifth in August, then disappeared in September, jumps up to third for October and November. Fourth and fifth are a bunch of one month wonders, with UK garage making an appearance in July in fourth, and Pop showing up in fourth for September and November.

Techno shows up in May sometime and holds strong all the way until September.

I don’t have genre data by month for Spotify or iTunes, but there are some similar patterns:

Tables comparing the top 5 genres added to iTunes with the top 5 genres listed by Spotify. Electronic was the top genre added to iTunes with 31 songs, followed by R&B/Soul with 12 songs, Indie Rock with 11 songs, Pop with 10, and Dance with 8. Top 5 Spotify genres are Pop, Indie Pop, Indietronica, Future Garage, and Alt Z.

Pop music #

The theme across all of these genre charts that I haven’t mentioned yet is pop music. I eschewed pop music for most of my teen years and have some friends in freshman year of college to thank for introducing me to artists like Pitbull and Jason Derulo and teaching me to like pop music.

Since then, I’ve largely stuck to artists like Ariana Grande or Carly Rae Jepsen. This past year, inspired by an occasional show on KCHUNG radio and a collaborative playlist with two of my best friends, I dove deep into what I’ve been calling “modern pop” from artists like Ava Max, MUNA, Dagny, Caroline Polachek, and others.

Those deep dives reveal themselves as mini obsessions in my music listening habits and my Spotify Wrapped.

The top 15 or so artists from my Spotify Top 100 songs of 2023 playlist reflect this interest: Table with top 16 tracks from the Spotify Top 100 songs of 2023 playlist, with relevant artists mentioned in the surrounding text. The table adds playcount data, so Mallrat is listed in 2nd place with 10 listens, but Abby Sage with Backwards Direction is in fifth place with 17 listens, followed by Arlo Parks' song Weightless with 9 listens.

Artists like Mallrat, Griff, Abby Sage, Arlo Parks, Gatlin, Ava Max, ELIO, and HAIM show up strongly in my Spotify listening habits, but are much less represented in my overall top listens of the year:

Top 16 artists according to Last.fm, with Dagny’s song Love You Like That listed second with 20 listens, Abby Sage listed fourth with 17 listens, Griff listed near the bottom with 11 listens and ELIO listed last in the excerpt with 10 listens.

By contrast, only Dagny, Abby Sage, Griff, and ELIO show up in that chart — and those are the artists whose tracks I purchased. I also own some Ava Max tracks, but my listens of her peaked in January and petered off by March, while my listens of ELIO and related artists was spiking around March and April along with most of my pop listening, as the Last.fm genre chart also reflects, and was more widely dispersed over the rest of the music.

Column chart showing my top listens of my Spotify top 5 artists, showing that January over 40, February over 60, August around 35, and November over 80 listens were huge spikes of Bombay Bicycle Club listens, Overmono having a large spike in May of nearly 40 listens, Barry Can’t Swim in October with 40 listens, whereas Ava Max is only visible for January, February, and March at around 10 listens or less, and ELIO has nearly 20 for March and April, then disappears. click to enlarge

Looking at just the first third of the year, Bombay Bicycle Club and Overmono consume a lot of listening time, but ELIO and Ava Max still contribute.

Column chart showing just January, February, March and April with relevant parts described in surrounding text.

Largely, these pop songs are much more indie-influenced — they’re emotional and moody, yet catchy. That seems to describe most of what I’ve been listening to lately tbh.

Genre explorations — what is Alt Z? #

Spotify Wrapped 2023 included a nice genre sandwich:

Neon sandwich visualization showing my top 5 genres, pop, indie pop, indietronica, future garage, and alt z.

I love to see Future Garage on there, and Pop and Indie Pop are unsurprising as previously discussed, while Indietronica is in my top 5 every year. But Alt Z? That feels totally made up.

I’ve gone into detail about the complexities and hyper-specificity of Spotify’s genre categorizations before, but this still felt like a lot.

I figured this genre likely came from one of my top artists according to Spotify, and it turned out I was right.

Using Spotify’s Get Artist API endpoint, I retrieved the genres of my top 5 artists, and ELIO, the artist that I listened to second-most this year according to Spotify, had the following genres:

[
  "alt z",
  "electropop"
]

That’s one mystery solved. But what is Alt Z? I dug a little deeper by calling the Get Artist’s Related Artists endpoint to see which artists were related to ELIO, and if any of them had the same Alt Z genre.

Turns out that a lot of them do:

    {
      "genres": [
        "alt z",
        "bedroom pop"
      ],
      "name": "Sophie Cates",
      "popularity": 33,
      "type": "artist",
      "uri": "spotify:artist:4xjJOu0MWVWuaDVZOy0Dx2"
    },
    {
      "genres": [
        "alt z"
      ],
      "name": "Julia Wolf",
      "popularity": 44,
      "type": "artist",
      "uri": "spotify:artist:5yvGiZLSWJTPBlZpVbPnEZ"
    },
    {
      "genres": [
        "alt z",
        "indie pop",
        "nyc pop"
      ],
      "name": "Maude Latour",
      "popularity": 44,
      "type": "artist",
      "uri": "spotify:artist:3MNLhvqJkWsO6tcjY9ps62"
    },
    {
      "genres": [
        "alt z",
        "indie pop",
        "indie poptimism",
        "uk pop"
      ],
      "name": "The Aces",
      "popularity": 49,
      "type": "artist",
      "uri": "spotify:artist:2AmfMGi3WZMxqFDHissIAe"
    },
    {
      "genres": [
        "alt z",
        "nyc pop"
      ],
      "name": "Heather Sommer",
      "popularity": 46,
      "type": "artist",
      "uri": "spotify:artist:0EHYuPn9Xng2lZP2cfz4cV"
    },
    {
      "genres": [
        "alt z",
        "canadian pop"
      ],
      "name": "renforshort",
      "popularity": 42,
      "type": "artist",
      "uri": "spotify:artist:3GYvf7puxwkr51EYoD9E7D"
    }

In listening to the artists, it seems like the things in common are that the artists are all women and somewhat young. To my ear at least, it’s difficult to hear how Julia Wolf, with echoes of mumble rap, might be the same genre as The Aces, with echoes of Alvvays, or as Sophie Cates, with echoes of Stars' track Calendar Girl.

Given that the genre is called Alt Z, I figured it was likely a reference to Generation Z, so I looked up the ages of the artists listed here. Sophie Cates is 24, ELIO is also 24 or 25, Julia Wolf is 28, Maude Latour is 24, Heather Sommer is 28, renforshort is 21, and while I couldn’t find exact ages for the women in The Aces, they seem to be in the same age range. Most of these ages are on the older side for Gen Z, so I don’t think it’s a valuable characterization.

Perhaps people that Spotify thinks are part of Generation Z listen to these artists, though I don’t think an “Alt Millennial” genre would be coherent at all, given the Pew Research Center, the preeminent population research centers in the United States, recently stopped using generational labels when doing research because it often lends itself to lazy research methods. Instead, they are shifting their focus: ‘When comparing generations, it’s crucial to control for age. In other words, researchers need to look at each generation or age cohort at a similar point in the life cycle.’

Even if I check out the Alt Z genre map on Every Noise at Once to see all the artists that Spotify lists in that genre, I’m still hard-pressed to identify a common theme across the artists.

What are the Spotify streaming habits? #

Every year, Spotify tries to imbue Wrapped with some ~ * insights * ~ and this year was the most boring in awhile, in my opinion. Spotify’s blog post Me in 2023 Reveals the Streaming Habit That Defined Your Listening describes the different streaming habits that characterized various types of listening this year on Spotify.

Image from Spotify Wrapped showing Me in 2023: with a card of a cartoon hand holding a potion, subtitled Alchemist with the description listed in the surrounding text.

Perhaps most interesting to me is that their blog post lists 12 different streaming habits, but when I asked my friends that use Spotify, those who replied to my question only ended up with one of five different characterizations:

  • Alchemist: Listening is your laboratory. You create playlists more than other listeners do. Nice work, doc.
  • Hypnotist: Your concentration is absolute, friend. You like to play albums all the way through, from the opening track to the final note.
  • Shapeshifter: One moment you’re head over heels for an artist. The next, you’ve moved on. Some say it’s erratic. We call it eclectic.
  • Vampire: When it comes to your listening, you like to embrace a little… darkness. You listen to emotional, atmospheric music more than most.
  • Time Traveler: Have we met before? You travel back in time and listen to songs on repeat, again and again. The best tracks never get old.

Like most of the Spotify Wrapped insights, these reveal the different types of clustering that Spotify performs with machine learning algorithms on our personal music listening habits:

By identifying these different streaming habits and quantifying the size of each cluster, Spotify can guide investments into different types of experiences—more algorithmically curated playlists for the Roboticist group, better playlisting tools for the Alchemist and Collector groups, and more.

Listening to less Spotify #

As I mentioned earlier, I’ve been trying for some years to listen to less music on Spotify and instead use other services. This year, Spotify made the decision only pay artists for their streams after a track has been streamed at least 1000 times.

From a business perspective, I can see why Spotify wants to do this. It simplifies their payout structures and billing monitoring infrastructure, removing a significant chunk of the long tail of tracks on the service that they’d otherwise need to monitor and pay out fractions of a penny for. All of that calculation and verification takes engineering effort to build and maintain—and for volumes that low, most artists can’t even collect the payouts anyway:

“Often, these micro-payments aren’t even reaching human beings; aggregators frequently require a minimum level of [paid-out streaming royalties] before they allow indie artists to withdraw the money.

It’s easy for me to consider that this doesn’t affect any artists that I listen to, but I went digging through some of my discoveries of this year, and it turned out that one song on an EP that I discovered this year didn’t yet have enough streams to qualify as of November 26, 2023:

Screenshot of the Sopp single Lift Me Up in Spotify, with one track So Good having 2,415 listens, Lift Me Up having 12,007 listens, and the third track, U Forgot, with 0 listens listed. The single was released on July 7, 2023, on Pomme Frite.

As of December 29, 2023, it just barely qualifies:

Screenshot of the same Sopp single, with So Good having 2,673 listens, Lift Me Up having 13,223 listens, and U Forgot now having 1,005 listens.

For artists like Sopp, who I discovered because I.Jordan played him in their Boiler Room set (and Sopp commented on a request for his own track ID), they won’t be able to make any money off that track until it reaches that point.

Metadata repercussions of listening to less Spotify #

Spotify has an integration with Last.fm that automatically scrobbles any track I listen to, making the metadata of those tracks extremely high quality. By contrast, songs that I listen to on SoundCloud or YouTube are scrobbled by a web scrobbler extension on my browser, which attempts to parse the description fields into an accurate artist and track, but doesn’t always succeed.

This means that the more I try to move away from listening to Spotify, the more the quality of my personal music listening data declines.

As one example, of the 8,196 songs that I listened to this year (so far), 5,282 of them were unique. Many of those unique tracks were actually YouTube videos that I watched, instead of songs I listened to.

As another example, of the 1435 artists I discovered this year, many of them were artists I discovered previously, but had fancy, inconsistent, or incorrect metadata when they were scrobbled:

Other artists were also YouTube videos that I watched:

Some of those sound like they could be pretty great artists, but as of today, they’re not.

In an attempt to clean this up, I deleted records associated with the YouTube channels I most frequently watch, such as Mentour Pilot, Taskmaster, or Lanterne Rouge and GCN Racing. That didn’t catch everything, however.

To try to catch any others, I ended up sorting the tracks I listened to by length and cleaning up any tracks that were clearly not song titles 8:

Table of long track titles, such as “Should Jasper Philipsen be DISQUALIFIED for THIS Sprint? Tour de France 2023 Stage 3” or “Frank Ocean Coachella #concert #frankocean #coachella #liveperformance #live” or “About Love (From the Netflix Film “To All the Boys: P.S. I Still Love You”)”.

That’s not a foolproof way to identify YouTube videos, however, because real songs also have long titles:

Table of long track names featuring songs like “My Number (Totally Enormous Extinct Dinosaurs Remix; Extended)” or “Take My Hand (Totally Enormous Extinct Dinosaurs Earth Remix)” or “Mambo No. 5 (DJ Expired Yogurt & DJ Keyliac’s 5AM Speed Mix)” or “Sunsleeper (Barry’s Bouncin’ Bassy Bisco Bemix Instrumental)” or “Speed Trials On Acid (feat. Dan Diamond) (LF SYSTEM Remix)”.

At a certain point I just have to go through the tracks manually and remove the erroneous scrobbles. I do this inconsistently, because the volume and utility is such that it isn’t worth setting up a full-fledged data cleaning pipeline, so instead we study it here.

If I ever get to the point where I’m matching my dataset with the MusicBrainz database, that would be an opportunity to build a full-fledged data cleaning pipeline based off the close-to-golden data in MusicBrainz, but I don’t have the bandwidth to run a copy of the database, join it with my Splunk instance, and build a data quality check at index time (or pursue an alternate architecture) as a side project.

And given the flexibility of data uploads and sharing in modern digital streaming platforms, there might not be a golden enough dataset that could accurately validate the available music available across the web.

Calculating a change in beats per minute #

One notable difference from my music listening last year is that the average BPM of songs I listen to has changed somewhat dramatically:

Duplicated in surrounding text

In 2022, 121 was the mean BPM, 123 was the median BPM, and 125 was the mode BPM.

Duplicated in surrounding text

This year, in 2023, 131 was the mean BPM, 128 was the median BPM, and a whopping 154 was the mode BPM.

That might not seem like a huge shift, but it hasn’t changed much over the years:

These BPM values are all firmly in House genre territory, and have been relatively consistent.

I figured these new numbers reflected the fact that I listened to many more high-tempo artists like Mall Grab, KETTAMA, and DJ Heartstring this year, compared with previous years.

When I dug deeper into how I calculate these averages, I discovered that I also have a data problem. I calculate track BPM by regularly building a file with the BPM data that I have from my iTunes library 9, which currently contains a scant 143 entries.

With those 143 songs, I do a search to match the songs that I listened to that year with the tracks for which I know the BPM, and calculate the averages accordingly 10. Using 143 songs to calculate the average BPM for over 8,100 track listens is a bit problematic.

That’s especially clear because, for 2023, it turns out that my average BPM stats are calculated based on ten listens to four songs.

This is another metadata pitfall of using the data easily and locally available to me (Last.fm and iTunes) instead of the vaster troves of data available were I to build a more complex architecture and poll Spotify’s metadata for my most-listened-to tracks of 2023.

But I don’t have to build something super complex to dig into what Spotify’s detailed metadata can tell me. To prove you don’t have to be good at this to improve your data analysis skills, I grabbed a non-random but representative sample of my music listening habits of 2023, using the following criteria:

I did some data cleaning because a few of my most-listened-to new tracks ended up being DJ sets, so for LB aka LABAT I swapped in his song Speed of Love, and for DJ Heartstring I swapped in It Ain’t Over and Can’t Stop the Night.

After collecting and de-duplicating those tracks, I ended up with 63 different tracks to collect data for. Me being me, I then opened up Spotify and searched for each track to retrieve the Spotify track ID. In doing so, I discovered that 3 of the 63 tracks were unavailable on Spotify. 1 of those was easily substituted with a similar track, so I gathered data for 61 total tracks.

I gathered BPM data from Spotify using the Get Track’s Audio Features API endpoint, so now I have a dataset of 61 songs that were some of my favorites of 2023 including BPM data.

If I then combine the data from these 61 songs with my listening activity during 2023, I can calculate some new averages 11 and get the following:

That’s a pretty wide spread, but it makes sense given that I have some pop songs with some

The audio features are computed using algorithms 12, and some of the data that I got was suspect in my opinion:

track_name artist spotify_id tempo
I Want To Be Your Only Pet Bombay Bicycle Club 0bRtjZg3D4IrSJPLj3Jyhu 188.083
My Big Day Bombay Bicycle Club 0ro5F0G6PaN4hmF3uIibCO 93.263
It Ain’t Over DJ Heartstring 2CXgBOHvaylFWhzk8aoNPG 145.993
Die Young (ft 347aidan) Sleepy Hallow 6EbVuwU7EnKeF2hdpViXCH 77.471
Floating Garden The Nunnery 0poWGgqNWbiaqonEku9De1 74.268
16 Steps Martin Jensen 7v3MkCal9v1Bw0N31X33qA 180.055

First off, the Bombay Bicycle Club tracks. Both of these tracks, I Want To Be Your Only Pet and My Big Day, are on the same album. I Want To Be Your Only Pet is track two, and My Big Day is track four.

If Spotify’s computed tempo data 13 is accurate, that would mean the second track on the album is 188 BPM — 43 BPM faster than DJ Heartstring’s track It Ain’t Over, and more than twice the BPM of a song just one track after it in the same album.

Take a few minutes to listen to all three of those tracks and grasp just how different in speed they are.

The next couple tracks also showcase a discrepancy in the data. Sleepy Hallow’s track Die Young (ft. 347aidan) isn’t a fast track, but 77 BPM is pretty slow.

Put that track on, and then go listen to Floating Garden by The Nunnery. According to Spotify’s data, these tracks are only three BPM apart from each other.

As one last example from this small sample of 61 songs, the track 16 Steps by Martin Jensen is listed as having a tempo of 180 BPM. It’s not nearly as slow as Floating Garden by The Nunnery, but it certainly isn’t 35 BPM faster than DJ Heartstring’s track.

A few years ago, I wrote a long post about why the quality of metadatasets like this one matters for music. The fact that I can find some seemingly incorrect data in a tiny sample of about 61 songs makes me even less confident in the quality of the algorithms attempting to compute audio features like tempo and beats per minute. Tempo quality matters, too, because it can be used for things like creating exercise playlists and recommending more upbeat songs 14.

Because I did all that research, I also know that there is another, more detailed Spotify API endpoint, Get Track’s Audio Analysis that provides details about every segment of a song. I wanted to see if there were tempo calculations for each segment of a song that might explain these discrepancies, but I found something else — a confidence score for the tempo computation.

If I look at the tempo confidence score for each of the tracks, I get some more valuable insights:

track_name tempo tempo confidence
I Want To Be Your Only Pet 188.083 0.144
My Big Day 93.263 0.767
It Ain’t Over 145.993 0.953
Die Young (ft 347aidan) 77.471 0.131
Floating Garden 74.268 0.206
16 Steps 180.055 0.207

In the cases where the computed tempo is much different from my expectations, the confidence score 15 is also fairly low. So it’s a small reassurance, but at least Spotify knows that their data is bad in these cases.

Digging even further into this, there’s a definite pattern for these outlier tempos. They are substantially faster or slower than expected. As I mentioned, the Bombay Bicycle Club track is just over twice as fast as the other song on the same album. And as it turns out, Sleepy Hallow’s track Die Young (ft 347aidan) is one for which I have BPM data in iTunes—and it’s listed as having a BPM of 154. 154 is twice of 77.

It’s pretty clear to me that while the computations exist to process music and identify the BPM for a track, identifying the dominant beat and thereby the actual BPM (instead of being off by a magnitude of two), is still an error-prone process that could use more humans in the loop for evaluation and validation.

Favorites of the year #

Separately from the most frequently listened to artists, songs, and albums, I also want to characterize my favorite artists, songs, and albums of the year. They can easily be the same, for obvious reasons, but there are other factors that influence frequency of listening that don’t necessarily make something a favorite, such as comfort, focus, or other purposeful listening.

Favorite albums #

My favorite albums of 2023 were the following:

Favorite EPs #

My favorite EPs of 2023 were the following:

Favorites that came out before 2023:

Favorite EPs that might be considered singles, actually:

Favorite songs #

My favorite songs of 2023, either singles or b-sides:

I also had some favorite tracks that I enjoyed this year, but which didn’t come out this year:

My favorite pop music tracks were also not from this year, and are also not singles, but here they are:

Some lesser-favorite, but still very enjoyable, tracks from this year, are:

Favorite DJ sets #

In ranked order, my favorite DJ sets that I did not attend in 2023 were the following:

  1. Overmono Boiler Room in Manchester
  2. DJ Heartstring Boiler Room at AVA Festival
  3. Romy Boiler Room in London
  4. Steel City Dance Discs hosting LOODS on Rinse FM (from 2022)
  5. Skream B2B Interplanetary Criminal @ Beams Recording (from 2022)
  6. MixMag Impact: Interplanetary Criminal (from 2022)
  7. MixMag The Cover Mix: HAAi (from 2022)
  8. LB aka LABAT Boiler Room at FLY Open Air
  9. Mall Grab B2B Skin On Skin @ Junction 2 Festival 2023

The sets by Skream, Interplanetary Criminal, and HAAi are late additions, but they were on primary rotation during my cross-country flights for the holidays.

Wrapping up 2023 in music #

It’s been a year of new discoveries, familiar artists, pocket investigations into what makes a genre and how BPM is defined, as well as the mundane streaming habits that Spotify uses to cluster and categorize its listeners.

I hope you enjoy some of my favorites. I’ll be back in another year to dig through my dirty data.


  1. “You like to hit play, kick back, and let the clever algorithms work their magic, track after track. Oh look, that rhymes.”, from Me in 2023 Reveals the Streaming Habit That Defined Your Listening↩︎

  2. “Your taste is sublime. You listen mostly to your own playlists, and we totally get why. They’re perfect, after all.”, from Me in 2023 Reveals the Streaming Habit That Defined Your Listening↩︎

  3. “Once you pick a favorite, you never let go. Your top artist makes up more than a third of your listening. Impressive.”, from Me in 2023 Reveals the Streaming Habit That Defined Your Listening↩︎

  4. “There’s a spark in you, and your listening shows it. You play light, upbeat music more than others. Bet you’re fun at parties.”, from Me in 2023 Reveals the Streaming Habit That Defined Your Listening↩︎

  5. “When it comes to your listening, you’re loyal and devoted. You like to focus on one genre. Sometimes while wearing a monocle.”, from Me in 2023 Reveals the Streaming Habit That Defined Your Listening↩︎

  6. “Knowledge is power, listener. Which makes you powerful indeed, as you like to study a wide range of different genres. Clever you.”, from Me in 2023 Reveals the Streaming Habit That Defined Your Listening↩︎

  7. “You’re always searching for new favorites. You skip tracks more than other listeners. Maybe it’s the thrill of the chase?”, from Me in 2023 Reveals the Streaming Habit That Defined Your Listening↩︎

  8. Using the following search:

    `lastfm` 
    | eval length=len(track_name)
    | fields track_name length
    | sort -length
    | dedup track_name
    | table track_name,length
    
     ↩︎
  9. Using the following search:

    index=music sourcetype=itunes_xml
    | search BPM!=""
    | inputlookup trackbpm.csv append=t
    | table BPM,track_name
    | outputlookup trackbpm.csv
    
     ↩︎
  10. Using the following search:

    `lastfm`
    | fields track_name,artist,_time
    | lookup trackbpm.csv track_name OUTPUT BPM
    | search BPM!=""  
    | fields BPM, track_name, _time
    | stats mode(BPM) as avg_bpm
    | eval avg_bpm=round(avg_bpm)
    | fields avg_bpm
    
     ↩︎
  11. Using the following search:

    `lastfm` | fields track_name,artist,_time
    | lookup 2023bpm.csv track_name OUTPUT tempo
    | search tempo!=""
    | fields tempo, track_name, _time
    | stats mean(tempo) as avg_bpm
    | eval avg_bpm=round(avg_bpm)
    | fields avg_bpm
    
     ↩︎
  12. I dug back into the patents to try to determine what mechanism Spotify uses specifically to compute tempo. So far, I discovered that “Techniques for deriving acoustic metadata from music signals are known.”, from Automatically acquiring acoustic information about music. The patent on searching media content based upon tempo references another one, Cadence-based playlists management system, which provides further information:

    “A tempo of a media content item can be determined in various known manners. In the example of songs, a tempo of a song can be relatively easily identified because songs typically have a steady tempo throughout their entire playing time. Where a tempo changes significantly throughout a song, in some embodiments, such variations in tempo can be averaged to represent a single tempo of the song. In other examples, a portion of the song having an approximately constant tempo can be identified, and such a constant tempo can be used as a tempo for the entire song. In yet other examples, the portion of the song having an approximately constant tempo is taken and used to replace the entire song while the other portion of the song, which has variable tempo, are excluded from playback. Other methods of obtaining a tempo of a song are also possible.”

    Which is a rather dry and depressing way to describe how a song is sampled to determine a tempo value for the entire song, but doesn’t describe how the beats are computationally identified by an algorithm.

    Apple has another patent, Musical analysis platform that goes into more detail about identifying key signatures than about identifying tempos, but makes it clearer how one might calculate and analyze beat placement in a song to identify tempo:

    Diagram from Apple’s patent showing an audio wave + metadata including melody, chords, key signature, and more going to a variety of different functions: automatic music accompaniment engine, with an arrow pointing from there to a guitar and a smartphone; automatic musical segmenting engine, with a somewhat hard to understand representation by a crosshatched rectangle + a striped rectangle; automatic composing engine which is also represented by several squares with patterns in them; and a song metrics analyzing engine with an arrow to an ordered list of metrics, such as chords, undescribed numbers, and sharp and flat symbols. ↩︎

  13. I don’t know how they compute it, but it’s defined as “The overall estimated tempo of a track in beats per minute (BPM). In musical terminology, tempo is the speed or pace of a given piece and derives directly from the average beat duration.”, from Get Track’s Audio Features↩︎

  14. Tempo quality specifically matters because it can be used to, for example, craft a playlist of songs for running (as described in the patent for Search media content based upon tempo):

    Diagram from the patent showing a masculine-presenting runner in a tanktop and shorts wearing headphones with a smarphone strapped to their arm running along a wrought iron fence with a city skyline in the background. The runner’s footsteps align with the downbeats of an audio wave at the bottom of the diagram, and an arrow indicates that the audio wave is what is inside the headphones. Another arrow points from the smartphone to a cloud labeld “network” and from there back and forth to a rectangle labeled “media-delivery system”.

    If the computed tempo has a low confidence score, it’s unlikely that it will be used to add the track to a playlist, but the patent doesn’t mention logic that incorporates the confidence score associated with the tempo.

    As another example, in a context where the media content might steer playback behavior, such as that described in the patent Media content steering, the tempo of the track also plays a role:

    “In other embodiments, the second media content item is selected such that at least one of the other facets remain the same or similar between the first media content item and the second media content item. In this example, the second media content item is determined to have a higher tempo that the tempo value of the first media content item, in order to suit the user request for “more upbeat” songs.”

     ↩︎
  15. Defined as “The confidence, from 0.0 to 1.0, of the reliability of the tempo.”, from Get Track’s Audio Analysis↩︎

  16. I saw Hessle Audio do a B2B2B last year thanks to the encouragement of some “scene elders” and I gotta say, while the set was a bit uneven, it was worth it to make it out there. If you go to shows with folks that are newer to the genre, take the time to educate them on the essentials. ↩︎