scotw-004: L-systems

L-systems are named after the Hungarian biologist Aristid Lindenmeyer, who devised them as a way to describe the growth of certain algae he was studying. Since then, they have found wide application in modeling the growth and structure of biological organisms, and are often used for computer-generated images of plants. For more information see Wikipedia, as well as Lindenmeyer’s excellent book, The Algorithmic Beauty of Plants [pdf].

Luckily, there is already an excellent blog post over at kimri.org on implementing L-systems in SuperCollider, and the code is well-suited to creative modification. One big change I made was to layer all of the iterations on top of each other. I find this makes for more interesting music and also highlights the self-similar nature of the structures that result from L-systems. Each new iteration is played at twice the previous speed. Because each iteration is longer than the previous, this works out well. In addition, I switched from MIDI notes to frequencies in order to easily work in just intonation. The visualization was made using essentially the same technique as in scotw-002. Code is below, and is reasonably well commented (although it would be really nice if Gist got around to supporting syntax highlighting for SuperCollider).