Writing code for music may still seem a remote notion to the vast majority of even geekier digital musicians, but as exemplified by the language Overtone, it looks very different than coding once did. Whereas sound code was once a type-and-render affair, new coding environments focus on live coding. They use elegant, lightweight modern languages that take up less space. And they can be surprisingly musical, coming remarkably close to just typing “play a c major chord.”

Not to say that you won’t look plenty geeky doing it — but, hey, if you can’t impress slash frighten your friends a little…

Using a brew of powerful free and open source tools, all available via GitHub and running here on the Mac (though any OS will work), contributor Sam Aaron walks through the program at top and demonstrates some musical examples. After the jump, a much longer screencast walks you through how to get up and running with the emacs text editor for live coding.

Key ingredients:
overtone @ github
emacs live coding @ github
supercollider for sound production
clojure, the language, modern dialect of lisp

Features, as described by the creators:

Overtone is a toolkit for creating synthesizers and making music. It provides:

  • a Clojure API to the SuperCollider synthesis engine
  • a growing library of musical functions (scales, chords, rhythms, arpeggiators, etc.)
  • metronome and timing system to support live-coding and sequencing
  • plug and play midi device I/O
  • simple Open Sound Control (OSC) message handling

Note the MIDI support — code, like many other things on the computer, isn’t very tangible. But you can quickly go to MIDI or OSC for some hands-on control of what you’re making. I have to say, some of this is quite a lot easier and less abstract than what you see in a Max/Pd-style environment. We’re blessed to have such choices in music making. Let us know if you try it out.

More videos and screencasts from this Cambridge-based artist:
Sam Aaron on Vimeo

CDM’s Matt Ganucheau contributed to this story in San Francisco.

  • Tom D

    Looks like really interesting stuff – definitely something I'd like to give a go, might try getting my head round pd first though 🙂 Thanks for sharing!

  • Hey, thanks for the great write-up! The only thing I should add is that I'm based in Cambridge (UK) these days, and people can see what I'm up to by following me on Twitter: @samaaron

  • hmm… this might get even a csound hater like me to do some musical coding! 🙂

  • Tom

    Sam – is it possible to do the same using Vim? Tried Googling but couldn't find any real info. I'd be willing to give emacs a go for this but you know what it's like when certain key commands get hard-wired into your head 🙂

  • @Tom Sure, it's totally possible to hack with Overtone from Vim. It's really all about getting a Clojure-setup which works. For Vim you should look at a combination Nailgun and VimClojure. You probably won't get some of the cool autocomplete features etc. but you should definitely be able to create and manipulate synths. 

    If you have any specific questions about this (or anything else Overtone related) head over to the mailing list: groups.google.com/group/overtone


  • Anyone care to compare and contrast Overtone and Impromptu?

  • @Mike For me, the core difference between Overtone and Impromptu is that Overtone is Open Source and Impromptu isn't. However, there are a bunch of other important technical differences:

    * Impromptu only works on a Mac, Overtone supports all major platforms (Mac, Linux and Windows)

    * Impromptu is written with Scheme, Overtone Clojure. From a distance, both appear the same as they're both lisps, but in reality the languages are quite different. I personally find Clojure easier to read and find its focus on immutable data structures and concurrency to fit extremely well to how I think about musical process. 

    * Impromptu's support for synthesis isn't as strong as SuperCollider's. SuperCollider has a larger range of synthesis options and is capable of modifying the synthesis tree in real time. Impromptu really requires you to set up the synthesis tree first before using it to make sound.

    * Impromptu has quite a bit more goodies when it comes to algorithmic composition than Overtone. However, this is just a function of it having existed a lot longer. I don't see any technical barriers for copying the cool concepts across to Overtone. In fact this has already happened a few times 🙂

    However, it should be noted that Andrew Sorensen is working on a new synthesis engine called Extempore which looks to be tackling most of the issues I alluded to above. It looks to be really outstanding. If you're interested in the differences between Extempore and Overtone, take a look at this Quora question:&nbsp ;http://www.quora.com/Music-Programming/What-are-the-differences-in-design-between-Overtone-and-Extempore-and-what-are-their-consequences

  • I just read through most of the Overtone website. Very ambitious. Many of the features listed are things I've wanted to see integrated into a computer music language environment for a long, long time. Particularly features listed on the blog and the roadmap such as PD/Max-like interface.

    I just joined the Overtone Google Group, and I'll be keeping a close eye as this project evolves. Good luck to you guys! I know what I'm playing with after work. 🙂

  • Bojan

    Can someone help me with basic setup steps one needs to do to try this on windows based machine. Im using supercollider for some time now, but have practicaly no programming experience, just learning on the fly 🙂

  • Kenny

    Thanks for posting this. Overtone looks very interesting,

    Sam, can you tell me more about the ascii staff notation? I didn't quite catch whether that's something that's unique to Overtone?


  • Overtone, Clojure, Homebrew, Emacs, Slime, Cake, and Swank … and wait, don't I need SuperCollider too? That combination of components makes Csound look like Garageband, in terms of point-and-click goodness. This comment is not meant to disrespect Overtone in any way — it looks as if it could be way cool. But after watching the video on how to set it all up, my brains are leaking out of my ears, that's all I'm saying.

  • Benny

    How do I use this on Windows 7 ?

    Will you consider to create a self contained package (or Windows installer)? Impromptu is one self contained program, but unfortenatly Mac only; Overtone should work on Windows, but it looks too complicated to set it up.

  • That was a compelling demo

  • @Bojan – someone on the mailing list (http://groups.google.com/group/overtone) has managed to get Overtone setup on Windows 7. I recommend asking any questions there. I've asked him if he could write a simple "Getting Started with Overtone on Windows" tutorial which he is currently working on

    @Kenny – the ascii art notation was just something I knocked up manually for the purposes of the demonstration – it helped me communicate what the Reich phase was in a notation more people could understand than the Clojure code I was writing. It would be fun to have a function which dynamically generated this though – a fun project if you fancied it!

    @Jim, @Benny – yup the setup is complicated. However, using it is also complicated. There's no easy win. Right now my efforts are going into making Overtone more powerful and expressive as a music engine. If people want to use it/hack on it they really need to be willing to get their hands dirty at this stage. Once we get things to an advanced enough state we'll start working on simple installers etc. Obviously, if you want to help out and create installers, we're totally happy to accept patches.

    @zerreference Thanks a lot 🙂 Positive feedback like that gives me the energy to continue working on Overtone.

  • If people are interested in listening to me discussing the background and philosophy of Overtone, then this interview with me just after I presented the work to a programming language conference might be interesting:&nbsp ;http://mostlylazy.com/2011/11/18/episode-0-0-2-sam-aaron-and-overtone-at-clojure-conj-2011/

  • Also, for those interested, this 20 minute intro  by Overtone hacker Phil Potter,is really well delivered:&nbsp ;http://skillsmatter.com/podcast/scala/clojurex-unpanel-2894

  • Here's another in-depth interview with me talking about the motivations and philosophy of Overtone:&nbsp ;http://twit.tv/show/floss-weekly/197?page=1

  • samaaron

    A talk on Overtone, including demonstrations, which I gave at a programming conference is now available: http://blip.tv/clojure/sam-aaron-programming-music-with-overtone-5970273