Record Club: TNG
Data Dive

Origins

What’s been a dream of mine for a long time, at least since June? Clearly this: the founding of a casual yet engaging Record Club by six serious music fans who would, once a month, join together at one or another of the founding member’s homes, perhaps with an occasional guest or supportive partner, for food, drink (wine), and, most of all, the communal appreciation of some lovingly hand-picked tunes. That is right, I am proposing a fully extracurricular, unpaid, for-the-love-of-the-game (music) endeavor.

Scott, email “Record Club: The Next Generation, a Proposal.”
2012-09-23

Rules

  • I propose that we meet once a month at one of our homes. We each contribute towards some food/drink.
  • I propose that we each bring to the gathering two pieces of music.
  • I propose that there be no restrictions on music selection. Selected pieces can range in genre, date of recording, playtime. Whatever moves you that month and yearns to be shared.
  • I propose that, at the end of each session, an mp3 compilation of the music played is prepared by the hosting member and disseminated to the group.

 

R Code

#Load tracks
tracks <- read.csv('https://docs.google.com/spreadsheets/d/e/1PACX-1vQCH5k4HOVnC8E0WZnOZ8zSMEq-Y33A3S5vBamQq/pub?gid=0&single=true&output=csv')

#Fix dates
tracks %>%
  mutate(Date = as.Date(Date, format = '%m/%d/%Y')) -> tracks

#Load people
people = read.csv('https://docs.google.com/spreadsheets/d/e/1PACX-1vQCH5k4HOVnC8E0WZnOZ8zSMEq-Y33A3S5vBamQq/pub?gid=978488521&single=true&output=csv')


#Merge people info into tracks data, and replace 'Contributor' field with normalized preferred names
df <- merge(tracks, people) %>%
  select(-Contributor) %>%
  rename(Contributor = preferred_name)

#Output table of folks with >10 tracks contributed
df %>%
  group_by(Contributor) %>%
  mutate(count = n()) %>%
  ungroup()%>%
  filter( count > 10) %>%
  rename(
    track_name = Song,
    album_name = Album,
    artist_name = Artist) %>%
  select(track_name, track_uri, album_name, artist_name, Contributor) %>%
  filter(!duplicated(track_uri),
         !is.na(track_uri)) -> df

Gender Ratio

 

Ratio of contributor gender
per session

Audio features

  • acousticness
  • danceability
  • duration
  • energy
  • instrumentalness
  • key*
  • liveness
  • loudness
  • mode*
  • speechiness
  • tempo
  • time signature*
  • valence

Feature Densities

For each audio feature, the statistical distribution of each Contributor's tracks across the possible range of values

Fingerprints

For each contributor, rankings for each audio feature as determined by the average of their contributed track scores within each audio feature

Correlation Analysis

Pairwise correlation of all the audio features in the dataset

***** Conclusion *****                            
 
* According to the majority rule, 
the best number of clusters is  5 

Importance of components:
                          PC1    PC2    PC3     PC4
Standard deviation     1.3751 1.0050 0.8796 0.57044
Proportion of Variance 0.4727 0.2525 0.1934 0.08135
Cumulative Proportion  0.4727 0.7252 0.9186 1.00000

Principle Component Analysis

Clusters

Clustering

Clustering, faceted by Contributor

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec metus justo. Aliquam erat volutpat.

Clustering, faceted by Round Theme

Individual Contributor Clusters

20% of your contributed tracks are labeled, to give you a sense of which of your tracks fall into which clusters

Scott

Individual Contributor Clusters

20% of your contributed tracks are labeled, to give you a sense of which of your tracks fall into which clusters

Josh

Here's to six more years!