Music, a lot like programming, can be built as a series of abstractions from simple underlying components. This repository is the source code for a live coding presentation given to Pittsburgh Code & Supply.
This talk focused on building from a very low level of abstraction, pure tones in the form of simple sine waves, into instruments that could play notes, up to sequences of notes, and finally a small composition of sequences.
The file
src/music_abstractions/talk.clj
is the source code typed in during the course of the talk, including
comments with demo examples. The file
src/music_abstractions/composition.clj
includes the instruments
definitions, sequencer function definitions, patterns, and composition
in a clean progression to a simple generative piece of music.
To make use of the code in this talk, you will need Clojure (likely with Leiningen), And the Overtone libary.
The presentation was given using Emacs, using Cider to connect to a networked Clojure REPL (nREPL).
For someone interested in getting started with Overtone, the introductory documentation is fairly good and is definitely the right place to start. However, it is not at all comprehensive. For someone interested in going beyond the introductory documentation, but unsure how to proceede, I have two suggestions.
-
Within the Overtone source, available on github, are a large number of examples. These examples are not referenced in the introductory documentation, but cover a much greater breadth of the functionality available through Overtone.
-
At the REPL, Overtone provides a help function,
odoc
which will print off documentation for a given command. For example:=> (odoc sin-osc)
will print off information about the sine wave oscillator ugen.
Simply typing in some of the examples linked above, and calling the
odoc
function on anything I did not immediately understand, helped
me to quickly grasp a significant portion of what was possible with
Overtone.
Copyright 2014 Erik Swanson
The contents of this repository are distributed under the MIT Public License. See LICENSE for more information.