Hacking Stuart McLean
The Vinyl Cafe is a much-beloved long-running CBC Radio programme hosted by Stuart McLean. The heart of each episode are the “Dave and Morley stories,” tales of a fictional Canadian family and their misadventures. And the stories are – quintessentially – Canadian, filled with the kind of wry self-deprecating humour that is at the heart of our national psyche.
Stuart McLean’s telling of the stories is also quintessentially, well, Stuart McLean, filled with expectant pauses and told with a masterful sense of comic timing. So much so that for years I thought that Dave and Morley were real, only to have the wool pulled away from my eyes by my brother; I emailed McLean to complain, and he replied, kindly, with a wink and an apology.
Those pauses: they are epic. Almost a character in the story themselves.
Here, for example, is a 14 second snippet of the Gabby Dubois episode that aired a few weeks ago:
Just look at that waveform: signature Stuart McLean.
Indeed here’s the same snippet, but with the pauses hand-edited out; you lose 4 seconds (30%) of the clip in the process, and much of the impact:
Listening to an episode of the show this weekend, I realized that those pauses were a key to hacking the Vinyl Cafe: if I could split a Dave and Morley story into chunks by splitting on the pauses I could then remix the story into, well, whatever I wanted. Fortunately the open source toolkit was chock full of tools to make this surprisingly easy on my Mac. Here’s how I did it.
Chop out Dave and Morley
From the Vinyl Cafe podcast feed I downloaded an episode of the show, the same Gabby Duboid episode I took the snippets from above. I then used Audacity to locate and copy-and-paste the Dave and Morley story into a new file, and saved this as an MP3, which I called gabby-dubois.mp3.
Split on Silence
To split the story into chunks based on silence I used the mp3splt program, like this:
mkdir silence mp3splt -d silence -s gabby-dubois.mp3
The result was the new silence directory filled with 326 small MP3 files, each a chunk of the story.
Glue Together at Random
The opposite of mp3splt is mp3wrap, which glues MP3 files together from the command line. I decided that it would be interesting to take the 326 small chunks of the Gabby Dubois story and randomly stick them back together to make an entirely new story. I did this like this:
cd silence mp3wrap ../gabby-dubois-random.mp3 \ `ls | \ perl -MList::Util=shuffle -e 'print shuffle(<STDIN>);' | \ tail -n 255 | \ tr '\n' ' '`
This sequence of commands has the effect of doing the following:
- Listing all the files in the silence directory.
- Sorting this list into random order (using Perl).
- Taking the last 255 randomly shuffled files (because mp3wrap has a limit of 255 files).
- Stripped out the carriage returns at the end of each file.
- Feeding the result as the list of files to combined to mp3wrap, with the resulting combined file called gabby-dubois-random.mp3.
The Nonsensical Result
Here is the nonsensical result, which sounds somewhat otherworldly because there’s little convey to that it’s not an actual story other than that it doesn’t make any sense. The pauses are still there, which is why it works as well as it does. Listening to it I find that my brain strains very hard to make sense of what’s happening. But it can’t.