
It's been a while! A lot has happened since my last post three months ago. After finding an accurate time source in Python I turned my attention to building a graphical user interface (GUI) for my Python music generator. That was moving along nicely, but then I discovered p5.js and my focus shifted entirely. This led me to develop a new web-based program that loops audio files, and I was able to perform a live set with the program on YouTube. Read on for more details!

For the past couple weeks I've been wrestling with how to handle timing in Python. This was the main challenge I'd have to solve before converting my Python music generator into a real-time system. After experimenting with several possible solutions I finally found a promising one.

After five weeks of intensive coding I was able to release an album of tracks generated by my music system. This was a month ago. In the aftermath of this frenzy of creative activity a mild hopelessness set in. Even though I could see a thousand paths forward, I wasn't sure I was up to the task of continuing on. I wasn't sure where to direct my attention next. I think this is pretty normal after a bout of creative activity. Here were the paths forward I couldn't decide on.
I ended up doing a little bit of all three over the past month. Here's what I've learned.

It's been a great year in listening to music for me. This is mostly due to the fact that I've been working from my home office, so I can play music on my stereo all day. Spotify was kind enough to tell me what albums I listened to most in 2020, so I thought I'd share them here along with some reflections. Writing up this blog post has given me a lot of gratitude for the listening experiences I was fortunate enough to have this year.

In my last post I talked about generating a Csound score with Tracery. That was a rewarding exercise, but Tracery isn't an ideal language to continue developing a music generator with. I decided to reimplement the music generator entirely in Python in order to take advantage of handy things like lists, conditional statements, functions, and classes. It all came together quicker than I expected, and I was even able to release an album of tracks showcasing the system.

In my previous post I talked about using Tracery to write grammars which generate text. In this post I'll talk about using Tracery to generate Csound scores instead.

This fall I've been sitting in on a computer science course at Carleton called CS 318: Computational Media, taught by a visiting professor named James Ryan. This course focuses on new forms of creative expression and media that can only be made with computers. Examples include computer-generated poetry and novels, Twitter bots, computer-generated visual art, and virtual reality works.
It’s been a while since my last post. Here’s an update on what I’ve been up to the last four months.
I basically stopped working on my Csound projects when I started auditing a computer science course in March (see below). There were two reasons for taking this break from Csound.

I was drawn to the work of Mark Fell this past fall when I was exploring rhythmic pattern generation and FM synthesis. In particular, I was blown away by Fell’s collaboration with Gábor Lázár from 2015 called The Neurobiology of Moral Decision Making.
I wanted to know how Fell and Lázár made these rhythms and sounds. A Google search landed me on this thread in the lines forum where I learned that Fell completed a PhD thesis in 2013 called Works in Sound and Pattern Synthesis. It turns out this thesis provides detailed discussions of Fell’s rhythmic pattern and synthesis algorithms. I decided to implement Fell’s ideas in Csound just like I did with James Tenney’s ideas.
I can’t remember why I decided to build a drum machine in Csound. After spending a few weeks on the James Tenney instrument, which generates notes in a very randomized way, I must have been interested in generating notes within a metrical framework. In other words, I wanted to learn how to use the metro opcode.
But first, why would you build a drum machine when there are dozens of free, full-featured drum machines available online? Two reasons: