Genre Rank Over Time

45 genres · 5,110 artists · 13,839 tracks · hover to highlight · click legend to toggle

Metric definition

Notation

For artist $a$ and track $i \in a$: let $p_i$ be the lifetime play count and $d_i$ the track duration. Define the clip cap $K = 50$. Let $n_a = |a|$ be the number of tracks by artist $a$ in the snapshot. We write $\hat{p}_i = \min(p_i, K)$ for the clipped play count. Three per-artist signals are then:

$$ \pi(a) = \sum_{i \in a} \hat{p}_i \qquad \tau(a) = \sum_{i \in a} \hat{p}_i \cdot d_i \qquad \nu(a) = \log(1 + n_a) $$

where $\pi(a)$ is clipped play count, $\tau(a)$ is clipped listening time, and $\nu(a)$ captures catalogue breadth on a log scale.

Stage 1 — per-artist composite score

Each signal is normalized by its maximum across all artists $a'$ in the current snapshot $\mathcal{L}_t$, then averaged:

$$ \phi(a) = \frac{1}{3}\left( \frac{\pi(a)}{\displaystyle\max_{a'} \pi(a')} + \frac{\tau(a)}{\displaystyle\max_{a'} \tau(a')} + \frac{\nu(a)}{\displaystyle\max_{a'} \nu(a')} \right) $$

so $\phi(a) \in [0, 1]$ for all artists.

Stage 2 — per-genre score

The score for genre $g$ is the sum of composite scores across its assigned artists:

$$\sigma(g) = \sum_{a \in g} \phi(a)$$

Genres are then ranked by $\sigma(g)$ in descending order.

Stage 3 — cumulative snapshot

The snapshot used at each time bucket $t$ is the union of all tracks added up to and including that year:

$$\mathcal{L}_t = \bigcup_{t' \leq t} \left\{ \text{tracks added in year } t' \right\}$$

All three signals $\pi$, $\tau$, $\nu$ and their maxima are computed fresh from $\mathcal{L}_t$ at each bucket.

Why recent years look stable: because $\mathcal{L}_t \subset \mathcal{L}_{t+1}$, the normalization denominators $\max_{a'} \pi(a')$ and $\max_{a'} \tau(a')$ can only grow over time. New additions each year are diluted against an ever-larger base — by the 2025 snapshot, 74% of total $\tau$ weight comes from tracks added before 2021, so a newly explored genre needs years of accumulation to visibly move $\sigma(g)$.

Notation

Signals $\pi(a)$, $\tau(a)$, $\nu(a)$, composite $\phi(a)$, and genre score $\sigma(g)$ are defined identically to LTD. Only the snapshot changes.

Stage 1 — per-artist composite score

$$ \phi(a) = \frac{1}{3}\left( \frac{\pi(a)}{\displaystyle\max_{a'} \pi(a')} + \frac{\tau(a)}{\displaystyle\max_{a'} \tau(a')} + \frac{\nu(a)}{\displaystyle\max_{a'} \nu(a')} \right) $$

Stage 2 — per-genre score

$$\sigma(g) = \sum_{a \in g} \phi(a)$$

Stage 3 — rolling window snapshot

At each bucket $t$, only tracks added within the most recent five buckets are included:

$$\mathcal{W}_t = \bigcup_{t'=t-4}^{t} \left\{ \text{tracks added in year } t' \right\}$$

All of $\pi$, $\tau$, $\nu$ and their maxima are recomputed from $\mathcal{W}_t$, so an artist who dominated the library in 2014 has no influence on the 2024 snapshot.

Trade-off: the window is noisier than LTD — a single year of heavy acquisition in a genre can spike $\sigma(g)$ even if lifetime $\tau$ is modest. Note also that $p_i$ in the library is a lifetime total, not scoped to the window, so $\pi(a)$ and $\tau(a)$ reflect all-time plays for tracks added in the window, not plays within it.

Notation

Signals $\pi(a)$, $\tau(a)$, $\nu(a)$, composite $\phi(a)$, and genre score $\sigma(g)$ are defined identically to LTD. Only the snapshot changes.

Stage 1 — per-artist composite score

$$ \phi(a) = \frac{1}{3}\left( \frac{\pi(a)}{\displaystyle\max_{a'} \pi(a')} + \frac{\tau(a)}{\displaystyle\max_{a'} \tau(a')} + \frac{\nu(a)}{\displaystyle\max_{a'} \nu(a')} \right) $$

Stage 2 — per-genre score

$$\sigma(g) = \sum_{a \in g} \phi(a)$$

Stage 3 — single-year snapshot

Only tracks added in exactly year $t$ are included:

$$\mathcal{S}_t = \left\{ \text{tracks added in exactly year } t \right\}$$

All signals and maxima are recomputed from $\mathcal{S}_t$ alone. This is the most sensitive view, showing which genres dominated your acquisitions in a given year.

Important caveat: because $p_i$ is a lifetime play count, $\pi(a)$ and $\tau(a)$ for a track added in 2015 include all plays accumulated through 2025. The single-year view reflects what you were adding each year, not what you were most actively listening to. Treat it as a proxy for acquisition interest rather than playback activity.