In search of the click track
Sometime in the last 10 or 20 years, rock drumming has changed. Many drummers will now don headphones in the studio (and sometimes even for live performances) and synchronize their playing to an electronic metronome - the click track. This allows for easier digital editing of the recording. Since all of the measures are of equal duration, it is easy to move measures or phrases around without worry that the timing may be off. The click track has a down side - some say that songs recorded against a click track sound sterile, that the missing tempo deviations added life to a song.
I've always been curious about which drummers use a click track and which don't, so I thought it might be fun to try to build a click track detector using the Echo Nest remix SDK ( remix is a Python library that allows you to analyze and manipulate music). In my first attempt, I used remix to analyze a track and then I just printed out the duration of each beat in a song and used gnuplot to plot the data. The results weren't so good - the plot was rather noisy. It turns out there's quite a bit of variation from beat to beat. In my second attempt I averaged the beat durations over a short window, and the resulting plot was quite good.
Now to see if we can use the plots as a click track detector. I started with a track where I knew the drummer didn't use a click track. I'm pretty sure that Ringo never used one - so I started with the old Beatle's track - Dizzy Miss Lizzie. Here's the resulting plot:
This plot shows the beat duration variation (in seconds) from the average beat duration over the course of about two minutes of the song (I trimmed off the first 10 seconds, since many songs take a few seconds to get going). In this plot you can clearly see the beat duration vary over time. The 3 dips at about 90, 110 and 130 correspond to the end of a 12 bar verse, where Ringo would slightly speed up.
Now lets compare this to a computer generated drum track. I created a track in GarageBand with a looping drum and ran the same analysis. Here's the resulting plot:
The difference is quite obvious, and stark. The computer gives a nice steady, sterile beat, compared to Ringo's.
Now let's try some real music that we suspect is recorded to a click track. It seems that most pop music nowadays is overproduced, so my suspicion is that an artist like Britney Spears will record against a click track. I ran the analysis on "Hit me baby one more time" (believe it or not, the song was not in my collection, so I had to go and find it on the internet, did you know that it is pretty easy to find music on the internet?). Here's the plot:
I think it is pretty clear from the plot that "Hit me baby one more time" was recorded with a click track. And it is pretty clear that these plots make a pretty good click track detector. Flat lines correspond to tracks with little variation in beat duration. So lets explore some artists to see if they use click tracks.
First up: Weezer:
Nope, no click track for Weezer. This was a bit of a surprise for me.
How about Green Day?
Yep - clearly a click track there. How about Metallica?
No click track for Lars! Nickeback?
update: fixed nickleback plot labels (thanks tedder)
No surprise there - Nickleback uses a click track. Another numetal band (one that I rather like alot) is Breaking Benjamin:
It is clear that they use a click track too - but what is interesting here is that you can see the bridge - the hump that starts at about 130 seconds into the song.
Of course John Bonham never used a click track - but lets check for fun:
So there you have it, using the Echo Nest remix SDK, gnuplot and some human analysis of the generated plots it is pretty easy to see which tracks are recorded against a click track. To make it really clear, I've overlayed a few of the plots:
One final plot ... the venerable stairway to heaven is noted for its gradual increase in intensity - part of that is from the volume and part comes from in increase in tempo. Jimmy Page stated that the song "speeds up like an adrenaline flow". Let's see if we can see this:
The steady downward slope shows shorter beat durations over the course of the song (meaning a faster song). That's something you just can't do with a click track. Update - as a number of commenters have pointed out, yes you can do this with a click track.
The code to generate the data for the plots is very simple:
def main(inputFile):
audiofile = audio.LocalAudioFile(inputFile)
beats = audiofile.analysis.beats
avgList = []
time = 0;
output = []
sum = 0
for beat in beats:
time += beat.duration
avg = runningAverage(avgList, beat.duration)
sum += avg
output.append((time, avg))
base = sum / len(output)
for d in output:
print d[0], d[1] - base
def runningAverage(list, dur):
max = 16
list.append(dur)
if len(list) > max:
list.pop(0)
return sum(list) / len(list)
I'm still a poor python programmer, so no doubt there are better Pythonic ways to do things - so let me know how to improve my Python code.
If any readers are particularly curious about whether an artist uses a click track let me know and I'll generate the plots - or better yet, just get your own API key and run the code for yourself.
Update: If you live in the NYC area, and want to see/hear some more about remix, you might want to attend dorkbot-nyc tomorrow (Wednesday, March 4) where Brian will be talking about and demoing remix.
Update - Sten wondered (in the comments) how his band Hungry Fathers would plot given that their drummer uses a click track. Here's an analysis of their crowd pleaser "A day without orange juice" that seems to indicate that they do indeed use a click track:
Update: More reader contributed click plots are here: More on click tracks ....
Update 2: I've written an application that lets you generate your own interactive click plots: The Echo Nest BPM Explorer