Finally, after two years, I’ve updated the live coding video on my front page. It’s a fresh performance of material that I played in a concert at Xinghai Conservatory this week (June 19). With the new generator framework, the music develops faster, into a more complex texture, than I could manage before. It’s a new milestone.
It’s been a much longer push than I anticipated, but worth it in the end. New features used in this video:
Generators create new materials on-the-fly. In the last 7–8 months, I rewrote generators almost from the ground up, exclusively using the technique of pre-filling a bar’s worth of material. This supports generator chains, which can express certain compositional algorithms in a general way (rather than requiring a new generator for every new idea). For example, in the YouTube video, at about 2:30, I change some 8th-notes into pairs of 16ths, by forcing a maximum rhythmic duration of half a beat (\choke(, 0.5, "x") adds an “x” (rest) half a beat after every item it finds), and randomly subdividing one sounding event (\div()).
Standardized processes for pitched material.
A handful of prepared instruments. This library will grow, and eventually I will publish it as a quark.
Snippets to simulate auto-completion for generators.
I’ve been working on this framework for almost 3 years now, and wanted to give up a few times. I’m glad I didn’t. It’s fun to play!