This talk will be a tour of musical and programming concepts expressed in Clojure - an immensely powerful and expressive modern LISP - with the Overtone music library. We'll talk about functional programming and how the basic building blocks of music can be expressed functionally in Clojure. We'll start with the most basic computer generated sound - a simple sine wave - and build up layered abstractions corresponding to music theory concepts as we pick apart how music works. Throughout the presentation, we'll see how building these abstractions using functional programming techniques allows for enormous flexibility. We'll explore an editing setup with nearly instant evaluation and show how that tight feedback loop can get the fiddly stuff out of our way to let creativity take center stage and make programming music in Overtone like playing an instrument. How can we learn to play this new instrument? Can we teach a computer about what sounds good? What do programming and music have in common? We'll find out in this talk.