Nickelmatic: Celebrating Mediocrity
January 5, 2013
An acquaintance who shall remain nameless has actually admitted to liking Nickelback. Now, I’ll concede that mocking this band has become a populist move and I’d rather ride a bike than take a bandwagon — but as this famous video shows there is something worth targeting here: manufactured, bland, cookie-cutter production masquerading as anything expressive. (I played that video for the acquaintance and they didn’t even notice what was going on — “yup, that’s Nickelback.”)
Enough has been said on that particular soapbox. But this got me thinking: since the music is basically invariant between songs, including riffs, drums, solos, and chord progressions, is it only the lyrics that differ? Why not automate the process completely?
Markov text generators are a pretty common way of generating new text that mimics the characteristics of other text. I used a Markov generator in this project and it did a pretty good job of picking up some of the quirks of Buckminster Fuller’s speech — his use of punctuation, neologisms, etc. — so it seemed like a good candidate for song lyrics.
Briefly, the algorithm looks at n-grams — sequences of n words (2 in this case). It analyzes the corpus, for our purposes a set of Nickelback lyrics from online sources, to look at which words tend to follow which other words. Then it generates new text by rolling the dice according to those statistics.
I used the code I’d already written for the aforementioned Auto-Matic Dymaxion Buckminster Fuller with a single adaptation to filter out single lyrics that also appear in the source material. (We wouldn’t want to duplicate entire songs, now, would we?)
A further thought regarding whether or not to filter out duplications of the original lyrics: it’s more interesting to read generated content that’s different from the original, but two considerations speak in favour of leaving them in. First, it means I don’t have to have a copy of the original text in order to generate new content. The code contains two parts: the first to generate a statistical representation of the source material, and the second to use it to generate new text. Supposing it was illegal to distribute the lyrics, I don’t think it would still be illegal to distribute a statistical analysis that doesn’t actually include the source lyrics in a reproducible form. And second, let’s say it does by chance generate an actual, entire Nickelback song. Isn’t that kind of the point, a la Borges? (Kind of the inverse of the infinite monkey theorem.)
Anyway, I left the filter in place. Actual song lyrics are discarded.
You can generate songs for yourself at Nickelmatic, but here’s a favourite illustrating how the results can often be more interesting (read: dirtier) than the original material:
Another Hole In The Moonlight
i got the car door opened up so you can stick me in the end
until that moment when i woke up this morning
why’s what’s best for you,
give my life in a knot
making friends, setting trends, hardly having to try to set you free me
what he’s done to me jesus christ
holes in hand
and escaped on a different story
and i’ve been there
here we are
we made it as a wise man
and this is it
not like i need another hole in the moonlight
and you control how fast we go by just shaking hands
she didn’t make it this far by just how fast we go
yeah, we’re gonna do it again
i’ll watch you die
from what you wanted
we never do it hanging
I dream of finding someone who sounds enough like Chad Kroeger that we can actually make this into a stage act: drums, guitar, and bass all playing an endless Nickelback vamp as the vocalist sings the lyrics off the screen as they’re generated. I think that would be worth 3 minutes and 53 seconds of your precious time.
Categorized as: Uncategorized
This is really interesting! It’s the lyrical analog to what Paul Lamere did with his “Bickelnack” video (and later with the Infinite Jukebox).
http://musicmachinery.com/2009/12/03/from-nickelback-to-bickelnack/
Great blog, btw!
Thanks, Luke — I’m clearly going to have to tinker with the Echo Nest toolset. I’m working on another similar hack that doesn’t pick such an obvious target; more on that soon.