Pure Data, and SuperCollider. I'm especially interested in attaining a surface-level understanding of music theory so I can produce generative music using either of these tools.
Last week, I started working on a simple Conway's Game of Life library in Rust. Mostly to have something to pair on with others, but also because I think Game of Life is cool. So cool in fact, that I believe I've started Game of Life implementations a handful of times in different languages but never actually finished them. I'm also interested in using this as an opportunity to learn what makes a library "good" in Rust.
I was talking with RC faculty on my concerns of not having anything to show by the end of my batch. I asked about about extending my batch (which is completely chill, because it's just an arbitrary date). They gave me some good strategies to explore my interests (music production) while also pursuing my other goals (filling-out my portfolio) as an alternative to extending, such as having a "music week" on the last week. But shortly after, I was struck with inspiration. I thought, how cool would it be to use a Game of Life board-state as a means of influencing generative music in real-time?
At the time of writing I'm not clear on the specifics. But I have a high-level understanding of the components I think will be involved.
Firstly, there's the Game of Life library that I have already started writing. This will provide an API to create and interact with Game of Life instances for use with other software.
Then, we need a way to interface with programs like Pure Data and SuperCollider. Probably the most straightforward way is via MIDI. Essentially, this Game of Life to MIDI "encoder" will consume the library mentioned above to generate a Game of Life state and then, reading that state, will generate MIDI events based on certain parameters. Ideally all of this will be highly configurable.
Finally, we come to the part where sound is actually produced. After defining a generative music "patch" in Pure Data terminology, or a sclang
program in SuperCollider, we would then define MIDI inputs which, when triggered, would influence the music in certain ways. Some obvious choices might be the level of a particular musical component or group, or the channel (left or right), but I'm excited to see what other fun interactions I can come up with!
I intend to be working and pairing on these three meta-projects as much as possible next week! I hope to at least have some fun Game of Life gifs to share next time. :)