For this assignment, I brought together a variety of techniques to create some algorithmic music.
I was primarily focused on two aspects of the piece:
- The synchronization of decoupled rhythmic components
- The generation of melody via a 2nd order Markov chain
Additionally, I implemented some high-level parameterization via some abstract classes I wrote last quarter for the KnacK framework1.
The lead instrument, as well as the pitched kick-like sound, are both synthesized using a technique I read about in John Chowning’s FM synthesis paper2. This technique involved creating two different envelope shapes for the carrier and modulator waves, and relating the modulation index to the carrier’s frequency linearly.
The non-pitched percussion is composed of sounds that I have recorded at one time or another.
The ambient tones in the beginning and end of the piece are generated using Chuck’s
For more detailed implementation information, see source files and comments.
Main.ck is where the
Score is defined.
All code can be downloaded here:
To download and build:
To play the piece:
chuck ./lib/vendor/KnacK/lib/import.ck:./lib/vendor/KnacK/lib/ ./import.ck