TITLE: Looking Back to Chris Ford's StrangeLoop 2015 Talk
AUTHOR: Eugene Wallingford
DATE: June 27, 2016 2:12 PM
StrangeLoop 2015 is
long in the books
for most people, but I occasionally still think about some of the
things I learned there. Chris Ford's
recent blog post
reminded me that I had a draft about his talk waiting to be
completed and posted. Had I published this post closer to the
conference, I would have called it Kolmogorov Music:
Compression and Understanding.
(This is the second follow-up post about a StrangeLoop 2015 talk
that is still on my mind. The previous follow-up was about
Peter Alvaro's talk
on languages and distributed systems.)
Chris Ford stepped the podium in front of an emacs buffer.
"Imagine a string of g's," he said, "infinitely long, going in
both directions." This is an infinite string, he pointed out,
with an 11-word description. That's the basic idea of
Kolmogorov complexity, and the starting point for his talk.
I first read about Kolmogorov complexity in a couple of papers by
that I found on the early web back in the 1990s. It fascinated
me then, and I went into "Kolmogorov Music", Ford's talk, with
high hopes. It more than delivered. The talk was informative,
technically clear, and entertaining.
Ford uses Clojure for this work in order to write macros. They
allow him to talk about code at two levels: source and expansion.
The source macro is his description of some piece of music, and
the expansion is the music itself, "executable" by an interpreter.
He opened by demo'ing some cool music, including a couple of his
own creations. Then he began his discussion of how complex a
piece of music is. His measure of complexity is the ratio of the
length of the evaluated data (the music) to the length of the
macro (the program that generates it). This means that complexity
is relative, in part, to the language of expression. If we used
a language other than Clojure, the ratios would be different.
Once we settle on a programming language, we can compare the
relative complexity of two pieces of music. This also gives rise
to cool ideas such as conditional complexity, based on the
distance between the programs that encode two pieces of music.
Compression algorithms do something quite similar: exploit our
understanding of data to express it in fewer bytes.
Ford said that he based his exploration on the paper
Analysis by Compression
by David Meredith, a "musicologist with a computational bent".
Meredith thinks of listening to music as a model-building process
that can be described using algorithms.
Programs have more expressive power than traditional music notation.
Ford gave as an example clapping music that falls farther and
farther behind itself as accompaniment continues. It's much easier
to write this pattern using a programming language with repetition
and offsets than using musical notation.
Everything has been cool so far. Ford pushed on to more coolness.
A minimalist idea can be described briefly. As Borges reminds us in
The Library of Babel,
a simple thing can contain things that are more complex than itself.
Ford applied this idea to music. He recalled Carl Sagan's novel
in which the constant pi was found to contain a hidden message.
Inspired by Sagan, Ford looked to
the Champernowne constant,
a number created by concatenating all integers in succession --
0.12345678910111213141516..., and turned it into music. Then he
searched it for patterns.
Ford found something that sounded an awful lot like "Blurred
Lines", a pop hit by Robin Thicke in 2013, and played it for us.
He cheekily noted that his Champernowne song infringes the
copyright on Thicke's song, which is quite humorous given the
controversial resemblance of Thicke's song to "Got to Give It Up",
a Marvin Gaye tune from 1977. Of course, Ford's song is infinitely
long, so it likely infringes the copyright of every song ever
written! The good news for him is that it also subsumes every song
to be written in the future, offering him the prospect of a steady
income as an IP troll.
Even more than usual, my summary of Ford's talk cannot possibly
do it justice, because he shows code and plays music! Let me
echo what was a common refrain on Twitter immediately after his
talk at StrangeLoop: Go watch
Seriously. You'll get to see him give a talk using only emacs
and a pair of speakers, and hear all of the music, too. Then
check out Ford's raw material. All of his references, music, and
code are available
on his Github site.
After that, check out his latest blog entry. More coolness.