My first interaction with Sam Aaron occurred during the writing of The Joy of Clojure. His stupendous attention to detail and willingness to provide constructive feedback was very helpful to Chouser and myself. I was immediately impressed by him. I later had the pleasure to talk with Sam at the 2011 Clojure Conj and I think it's safe to say that his talk on Overtone and open source music was the gem of the conference. His enthusiasm for Clojure and music is inspiring to many a Clojure hacker, but I suspect his influence is bound to expand beyond the Clojure community. In this installment of the
(take...) series I ask Sam about Overtone, Clojure, music, and the future.
How did you discover Clojure?
My discovery of Clojure was much more of a journey than a distinct event in time. Having read much of Paul Graham's work I developed a remarkable curiosity about his notion of the 100 year language, so Lisps were very much on my radar. I'd also done quite a bit of work massaging Ruby into DSL-like structures and was intrigued and excited by a language that was supposedly more malleable. I then spent quite a bit of time closely following Ola Bini's work on Ioke which provided my first experience with macro-like constructs and the power of treating code as data. However, I was experimenting with basic musical systems at that time and through experience realised I needed something that was not only high-level and linguistically flexible but also sufficiently efficient and had good support for concurrency. Ioke, Ruby and even JRuby weren't delivering so I was on the lookout for something else.
Although I had read about Clojure in the occasional blog post, the tipping point occurred in 2009. I had the luck and pleasure to catch Rich doing one of his early talks in Denmark introducing Clojure and his ideas concerning the separation of identity and state. Sitting and watching that talk was an incredible experience for me as it caused so many lightbulbs to explode like fireworks in my head. This had the effect of clearly illuminating Clojure not only as an important landmark in the philosophy of programming language design but also as a tool that would immediately help me solve the problems I was facing with my musical systems. I then went on a rampage and consumed as much Clojure information as I could get my hands on. I haven't stopped since.
What is your musical background?
I played clarinet and sax in a school jazz band whilst I was 11 - 15. I was never that great, but I did enjoy it. I also taught myself to play the piano a little by mostly using the black keys ;-) It was such a lot of fun but I was soon frustrated by the difference between where I'd like to go in a musical sense and my lack of technical ability to actually get there. I guess I was too impatient to practice which I'm rather sad about in retrospect. The aspect I miss most of all was the wonderful feeling of playing together in a band - a sense of shared timing and rhythm which enables a special type of communication I've only ever experienced in a musical context. It's something I really want to recreate through Overtone and therefore enabling others to have the opportunity to experience it too.
What is the story behind the device that you used in your demo?
The device is called a monome and was invented by a lovely chap called Brian Crabtree - it's essentially a grid of individually backlit buttons. I first saw it on a design blog which was demonstrating how the buttons near the power source illuminated in a subtle ripple-like pattern when it was connected. It was a clear demonstration of the insane attention to detail Brian had put into the device. Intrigued by such a strange object I was excited to discover that it was mostly used as a musical interface. There were a number of videos of it in action which showed that by pressing a few buttons you could make extremely sophisticated and interesting sounds - offloading much of the tricky technical elements to the software running on a connected computer. My mind was full of possibilities.
What's next for Overtone?
Overtone is now a technically sound and stable platform. The next chapter is therefore to explore its capabilities. I'm hoping that this exploration won't be an individual one rather it should be a community endeavour. One of the goals of Overtone is to enable an open and shared notation for the synthesis of music which is more powerful and pervasive than the Western Common Notation - the standard stave of lines and dots representing individual notes. This notation needs to be grown by a community using it to not only communicate their musical intentions to the computer but to also communicate musical ideas with each other. The effect of collaboratively developing and using this notation will be to provide us all with an amazing opportunity to learn about sound synthesis and music theory together - all through the medium of Clojure code. It should no longer be sufficient to ask "which synth did you use to make that sound?", instead we should be saying to each other "send me the source to that crazy music you made".
What manner of things could people do with Overtone that would make you happy?
Whilst experimenting with Overtone it would make me truly happy for people to not attempt to compare the sounds they make to stuff from their favourite musicians. Rather, I'd like people to judge their success with Overtone based on how much fun they're having. After giving a number of Overtone workshops it's always a joy to experience people's initial surprise of how much fun just making and controlling a basic square wave actually is. Although a long term goal is to use Overtone to make amazing professional quality music, there is a lot of distance to travel to get there and we'll only make it if we're working together and having crazy amounts of fun in the process.